From 87fd4a4c6736b4cfe429dbba34b62dbd87a90cbf Mon Sep 17 00:00:00 2001 From: Nicolas Chaulet Date: Tue, 19 Apr 2022 13:08:35 -0400 Subject: [PATCH 01/25] [Fleet] Update the link to logstash ssl documentation (#130510) --- packages/kbn-doc-links/src/get_doc_links.ts | 1 + packages/kbn-doc-links/src/types.ts | 1 + .../settings/components/logstash_instructions/index.tsx | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 80760520da27f..18bdfcb0b11a3 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -601,6 +601,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { learnMoreBlog: `${ELASTIC_WEBSITE_URL}blog/elastic-agent-and-fleet-make-it-easier-to-integrate-your-systems-with-elastic`, apiKeysLearnMore: `${KIBANA_DOCS}api-keys.html`, onPremRegistry: `${FLEET_DOCS}air-gapped.html`, + secureLogstash: `${FLEET_DOCS}secure-logstash-connections.html`, }, ecs: { guide: `${ELASTIC_WEBSITE_URL}guide/en/ecs/current/index.html`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index 57a48219b973c..e39dd039edd16 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -358,6 +358,7 @@ export interface DocLinks { learnMoreBlog: string; apiKeysLearnMore: string; onPremRegistry: string; + secureLogstash: string; }>; readonly ecs: { readonly guide: string; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/index.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/index.tsx index e87e0049bde89..c3d43f85038c0 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/index.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/logstash_instructions/index.tsx @@ -188,7 +188,7 @@ const LogstashInstructionSteps = () => { defaultMessage="Replace the parts between the brackets with your generated SSL certificate file paths. View {documentationLink} to generate the certificates." values={{ documentationLink: ( - + Date: Tue, 19 Apr 2022 12:14:42 -0500 Subject: [PATCH 02/25] [Enterprise Search] Add documentation link for BYOEI (#130494) * Add link and type to doc links packages * Add link to UI --- packages/kbn-doc-links/src/get_doc_links.ts | 1 + packages/kbn-doc-links/src/types.ts | 1 + .../components/engine_creation/engine_creation.tsx | 6 +++++- .../public/applications/shared/doc_links/doc_links.ts | 4 ++++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index 18bdfcb0b11a3..f4d01b8f12353 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -96,6 +96,7 @@ export const getDocLinks = ({ kibanaBranch }: GetDocLinkOptions): DocLinks => { crawlRules: `${APP_SEARCH_DOCS}crawl-web-content.html#crawl-web-content-manage-crawl-rules`, curations: `${APP_SEARCH_DOCS}curations-guide.html`, duplicateDocuments: `${APP_SEARCH_DOCS}web-crawler-reference.html#web-crawler-reference-content-deduplication`, + elasticsearchIndexedEngines: `${APP_SEARCH_DOCS}elasticsearch-engines.html`, entryPoints: `${APP_SEARCH_DOCS}crawl-web-content.html#crawl-web-content-manage-entry-points`, guide: `${APP_SEARCH_DOCS}index.html`, indexingDocuments: `${APP_SEARCH_DOCS}indexing-documents-guide.html`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index e39dd039edd16..e51ef91ac43b1 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -82,6 +82,7 @@ export interface DocLinks { readonly crawlRules: string; readonly curations: string; readonly duplicateDocuments: string; + readonly elasticsearchIndexedEngines: string; readonly entryPoints: string; readonly guide: string; readonly indexingDocuments: string; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/engine_creation.tsx b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/engine_creation.tsx index 28cbc818b60c7..33a8135fa63d4 100644 --- a/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/engine_creation.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/components/engine_creation/engine_creation.tsx @@ -33,6 +33,7 @@ import { import { i18n } from '@kbn/i18n'; +import { docLinks } from '../../../shared/doc_links'; import { parseQueryParams } from '../../../shared/query_params'; import { ENGINES_TITLE } from '../engines'; import { AppSearchPageTemplate } from '../layout'; @@ -212,7 +213,10 @@ export const EngineCreation: React.FC = () => {

- + {i18n.translate( 'xpack.enterpriseSearch.engineCreation.elasticsearchIndexedLink', { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts index 5911b76e723a3..b507e5466f13f 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/doc_links/doc_links.ts @@ -16,6 +16,7 @@ class DocLinks { public appSearchCurations: string; public appSearchDuplicateDocuments: string; public appSearchEntryPoints: string; + public appSearchElasticsearchIndexedEngines: string; public appSearchGuide: string; public appSearchIndexingDocs: string; public appSearchIndexingDocsSchema: string; @@ -95,6 +96,7 @@ class DocLinks { this.appSearchCurations = ''; this.appSearchDuplicateDocuments = ''; this.appSearchEntryPoints = ''; + this.appSearchElasticsearchIndexedEngines = ''; this.appSearchGuide = ''; this.appSearchIndexingDocs = ''; this.appSearchIndexingDocsSchema = ''; @@ -174,6 +176,8 @@ class DocLinks { this.appSearchCrawlRules = docLinks.links.appSearch.crawlRules; this.appSearchCurations = docLinks.links.appSearch.curations; this.appSearchDuplicateDocuments = docLinks.links.appSearch.duplicateDocuments; + this.appSearchElasticsearchIndexedEngines = + docLinks.links.appSearch.elasticsearchIndexedEngines; this.appSearchEntryPoints = docLinks.links.appSearch.entryPoints; this.appSearchGuide = docLinks.links.appSearch.guide; this.appSearchIndexingDocs = docLinks.links.appSearch.indexingDocuments; From 2a78f350e175b496d9a0105675b694bb3146f1fc Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 19 Apr 2022 12:24:58 -0500 Subject: [PATCH 03/25] break out parts of @kbn/dev-utils (#130509) * break out parts of @kbn/dev-utils * autofix imports and kbn/pm dist * update readme for @kbn/stdio-dev-helpers * finish renames --- package.json | 14 + packages/BUILD.bazel | 14 + .../elastic-eslint-config-kibana/.eslintrc.js | 84 +++ packages/kbn-ci-stats-client/BUILD.bazel | 120 ++++ packages/kbn-ci-stats-client/README.md | 3 + packages/kbn-ci-stats-client/jest.config.js | 13 + packages/kbn-ci-stats-client/package.json | 10 + .../src}/ci_stats_client.ts | 5 +- .../src}/index.ts | 3 +- packages/kbn-ci-stats-client/tsconfig.json | 17 + packages/kbn-ci-stats-core/BUILD.bazel | 116 +++ packages/kbn-ci-stats-core/README.md | 3 + packages/kbn-ci-stats-core/jest.config.js | 13 + packages/kbn-ci-stats-core/package.json | 10 + .../src}/ci_stats_config.ts | 2 +- .../src}/ci_stats_metadata.ts | 0 .../src}/index.ts | 7 +- packages/kbn-ci-stats-core/tsconfig.json | 17 + packages/kbn-ci-stats-reporter/BUILD.bazel | 122 ++++ .../README.md | 0 packages/kbn-ci-stats-reporter/jest.config.js | 13 + packages/kbn-ci-stats-reporter/package.json | 10 + .../src}/ci_stats_reporter.ts | 5 +- .../src}/ci_stats_test_group_types.ts | 2 +- packages/kbn-ci-stats-reporter/src/index.ts | 23 + .../src}/report_time.ts | 4 +- packages/kbn-ci-stats-reporter/tsconfig.json | 17 + .../kbn-cli-dev-mode/src/cli_dev_mode.test.ts | 6 +- packages/kbn-cli-dev-mode/src/cli_dev_mode.ts | 2 +- packages/kbn-cli-dev-mode/src/dev_server.ts | 2 +- .../src/get_server_watch_paths.test.ts | 2 +- packages/kbn-cli-dev-mode/src/log.ts | 2 +- .../kbn-cli-dev-mode/src/optimizer.test.ts | 3 +- packages/kbn-cli-dev-mode/src/optimizer.ts | 2 +- packages/kbn-dev-utils/BUILD.bazel | 14 +- .../ci_stats_reporter/package.json | 4 - .../sort_package_json/package.json | 4 - packages/kbn-dev-utils/src/index.ts | 6 +- .../kbn-dev-utils/src/proc_runner/proc.ts | 4 +- .../src/proc_runner/proc_runner.ts | 2 +- .../src/proc_runner/with_proc_runner.test.ts | 2 +- .../src/proc_runner/with_proc_runner.ts | 3 +- packages/kbn-dev-utils/src/run/cleanup.ts | 2 +- packages/kbn-dev-utils/src/run/flags.ts | 2 +- packages/kbn-dev-utils/src/run/help.ts | 2 +- packages/kbn-dev-utils/src/run/metrics.ts | 4 +- packages/kbn-dev-utils/src/run/run.ts | 2 +- .../src/run/run_with_commands.test.ts | 2 +- .../src/run/run_with_commands.ts | 2 +- .../ship_ci_stats_cli.ts | 5 +- packages/kbn-dev-utils/stdio/package.json | 4 - .../kbn-dev-utils/tooling_log/package.json | 4 - .../buid_api_declaration.test.ts | 2 +- .../build_api_declaration.ts | 2 +- .../extract_import_refs.test.ts | 2 +- .../extract_import_refs.ts | 2 +- .../build_api_declarations/get_references.ts | 2 +- .../build_api_declarations/get_signature.ts | 2 +- .../api_docs/build_api_declarations/types.ts | 2 +- .../src/api_docs/build_api_docs_cli.ts | 3 +- .../get_declaration_nodes_for_plugin.ts | 2 +- .../src/api_docs/get_plugin_api.ts | 2 +- .../src/api_docs/get_plugin_api_map.ts | 2 +- .../mdx/build_plugin_deprecations_table.ts | 2 +- .../api_docs/mdx/split_apis_by_folder.test.ts | 2 +- .../kbn-docs-utils/src/api_docs/mdx/types.ts | 2 +- .../mdx/write_deprecations_doc_by_api.ts | 2 +- .../mdx/write_deprecations_doc_by_plugin.ts | 2 +- .../mdx/write_deprecations_due_by_team.ts | 2 +- .../mdx/write_plugin_directory_doc.ts | 2 +- .../mdx/write_plugin_split_by_folder.test.ts | 2 +- .../src/api_docs/tests/api_doc_suite.test.ts | 2 +- .../kbn-docs-utils/src/api_docs/utils.test.ts | 2 +- packages/kbn-docs-utils/src/api_docs/utils.ts | 2 +- packages/kbn-es-archiver/src/actions/edit.ts | 2 +- .../src/actions/empty_kibana_index.ts | 2 +- packages/kbn-es-archiver/src/actions/load.ts | 2 +- .../src/actions/rebuild_all.ts | 2 +- packages/kbn-es-archiver/src/actions/save.ts | 2 +- .../kbn-es-archiver/src/actions/unload.ts | 2 +- packages/kbn-es-archiver/src/es_archiver.ts | 2 +- .../docs/generate_doc_records_stream.test.ts | 2 +- .../lib/docs/index_doc_records_stream.test.ts | 3 +- .../src/lib/indices/__mocks__/stubs.ts | 2 +- .../src/lib/indices/create_index_stream.ts | 2 +- .../src/lib/indices/delete_index.ts | 2 +- .../src/lib/indices/delete_index_stream.ts | 2 +- .../src/lib/indices/kibana_index.ts | 2 +- packages/kbn-es-archiver/src/lib/progress.ts | 2 +- .../kbn-es-archiver/src/lib/stats.test.ts | 2 +- packages/kbn-es-archiver/src/lib/stats.ts | 2 +- packages/kbn-es/src/artifact.test.js | 2 +- packages/kbn-es/src/artifact.ts | 2 +- packages/kbn-es/src/cli_commands/snapshot.js | 3 +- .../kbn-es/src/install/install_archive.ts | 3 +- .../kbn-es/src/install/install_snapshot.ts | 2 +- packages/kbn-es/src/install/install_source.ts | 2 +- .../src/integration_tests/cluster.test.js | 10 +- packages/kbn-es/src/utils/build_snapshot.ts | 3 +- packages/kbn-es/src/utils/log.ts | 2 +- .../kbn-es/src/utils/native_realm.test.js | 2 +- packages/kbn-generate/BUILD.bazel | 2 + .../src/commands/package_command.ts | 3 +- packages/kbn-generate/src/lib/render.ts | 3 +- .../kbn-generate/src/lib/validate_file.ts | 3 +- .../integration_tests/import_resolver.test.ts | 2 +- packages/kbn-jest-serializers/BUILD.bazel | 118 ++++ packages/kbn-jest-serializers/README.md | 11 + packages/kbn-jest-serializers/jest.config.js | 13 + packages/kbn-jest-serializers/package.json | 10 + .../src}/absolute_path_serializer.ts | 0 .../src}/any_instance_serizlizer.ts | 0 packages/kbn-jest-serializers/src/index.ts | 13 + .../src}/recursive_serializer.ts | 0 .../src}/replace_serializer.ts | 0 .../src}/strip_ansi_serializer.ts | 0 packages/kbn-jest-serializers/tsconfig.json | 17 + .../basic_optimization.test.ts | 3 +- .../integration_tests/bundle_cache.test.ts | 2 +- .../optimizer_built_paths.test.ts | 2 +- packages/kbn-optimizer/src/limits.ts | 4 +- .../src/log_optimizer_progress.ts | 2 +- .../kbn-optimizer/src/log_optimizer_state.ts | 2 +- .../src/optimizer/get_plugin_bundles.test.ts | 2 +- .../optimizer/kibana_platform_plugins.test.ts | 2 +- .../src/optimizer/optimizer_cache_key.test.ts | 2 +- .../src/optimizer/optimizer_config.test.ts | 2 +- .../src/report_optimizer_timings.ts | 3 +- .../src/worker/bundle_metrics_plugin.ts | 2 +- .../integration_tests/generate_plugin.test.ts | 2 +- .../kbn-plugin-helpers/src/build_context.ts | 2 +- packages/kbn-plugin-helpers/src/config.ts | 2 +- .../src/integration_tests/build.test.ts | 2 +- packages/kbn-pm/dist/index.js | 665 ++++++++++-------- packages/kbn-pm/src/cli.ts | 2 +- packages/kbn-pm/src/commands/bootstrap.ts | 2 +- packages/kbn-pm/src/run.ts | 2 +- packages/kbn-pm/src/utils/bazel/run.ts | 2 +- .../utils/link_project_executables.test.ts | 2 +- packages/kbn-pm/src/utils/log.ts | 2 +- .../src/utils/regenerate_package_json.ts | 2 +- packages/kbn-sort-package-json/BUILD.bazel | 116 +++ packages/kbn-sort-package-json/README.md | 3 + packages/kbn-sort-package-json/jest.config.js | 13 + packages/kbn-sort-package-json/package.json | 10 + .../src/index.ts} | 0 packages/kbn-sort-package-json/tsconfig.json | 17 + packages/kbn-stdio-dev-helpers/BUILD.bazel | 118 ++++ packages/kbn-stdio-dev-helpers/README.md | 3 + packages/kbn-stdio-dev-helpers/jest.config.js | 13 + packages/kbn-stdio-dev-helpers/package.json | 10 + .../src}/index.ts | 7 +- .../src}/observe_lines.ts | 0 .../src}/observe_readable.ts | 0 packages/kbn-stdio-dev-helpers/tsconfig.json | 17 + packages/kbn-test/src/es/test_es_cluster.ts | 2 +- .../add_messages_to_report.test.ts | 2 +- .../add_messages_to_report.ts | 2 +- .../existing_failed_test_issues.test.ts | 3 +- .../existing_failed_test_issues.ts | 3 +- .../src/failed_tests_reporter/github_api.ts | 3 +- .../report_failures_to_es.ts | 3 +- .../report_failures_to_file.ts | 2 +- .../run_failed_tests_reporter_cli.ts | 3 +- .../src/functional_test_runner/cli.ts | 4 +- .../functional_test_runner.ts | 2 +- .../lib/config/read_config_file.test.js | 2 +- .../lib/config/read_config_file.ts | 2 +- .../lib/docker_servers/container_logs.ts | 3 +- .../lib/docker_servers/container_running.ts | 2 +- .../docker_servers/docker_servers_service.ts | 2 +- .../lib/mocha/filter_suites.ts | 2 +- .../mocha/reporter/ci_stats_ftr_reporter.ts | 6 +- .../lib/mocha/reporter/reporter.js | 3 +- .../lib/providers/provider_collection.ts | 2 +- .../lib/providers/verbose_instance.ts | 2 +- .../functional_test_runner/public_types.ts | 2 +- .../functional_tests/cli/run_tests/args.js | 2 +- .../cli/run_tests/args.test.js | 2 +- .../cli/start_servers/args.js | 2 +- .../cli/start_servers/args.test.js | 2 +- .../functional_tests/lib/run_elasticsearch.ts | 2 +- .../src/functional_tests/lib/run_ftr.ts | 2 +- .../kbn-test/src/functional_tests/tasks.ts | 4 +- .../src/jest/ci_stats_jest_reporter.ts | 3 +- packages/kbn-test/src/jest/run.ts | 3 +- .../kbn-test/src/kbn_client/kbn_client.ts | 2 +- .../kbn_client/kbn_client_import_export.ts | 3 +- .../src/kbn_client/kbn_client_requester.ts | 3 +- .../kbn_client/kbn_client_saved_objects.ts | 3 +- .../src/kbn_client/kbn_client_ui_settings.ts | 2 +- packages/kbn-tooling-log/BUILD.bazel | 118 ++++ packages/kbn-tooling-log/README.md | 3 + packages/kbn-tooling-log/jest.config.js | 13 + packages/kbn-tooling-log/package.json | 10 + .../__snapshots__/log_levels.test.ts.snap | 0 .../__snapshots__/tooling_log.test.ts.snap | 0 .../tooling_log_text_writer.test.ts.snap | 0 .../src}/index.ts | 8 +- .../src}/log_levels.test.ts | 0 .../src}/log_levels.ts | 0 .../src}/message.ts | 0 .../src}/tooling_log.test.ts | 3 +- .../src}/tooling_log.ts | 0 .../src}/tooling_log_collecting_writer.ts | 0 .../src}/tooling_log_text_writer.test.ts | 0 .../src}/tooling_log_text_writer.ts | 0 .../src}/writer.ts | 0 packages/kbn-tooling-log/tsconfig.json | 17 + src/cli_plugin/install/settings.test.js | 2 +- src/cli_plugin/remove/settings.test.js | 2 +- .../server/plugins/plugins_service.test.ts | 2 +- src/core/test_helpers/kbn_server.ts | 2 +- src/dev/build/README.md | 4 +- src/dev/build/args.test.ts | 3 +- src/dev/build/args.ts | 2 +- src/dev/build/build_distributables.ts | 2 +- src/dev/build/lib/build.test.ts | 2 +- src/dev/build/lib/config.test.ts | 2 +- src/dev/build/lib/download.ts | 3 +- src/dev/build/lib/exec.test.ts | 8 +- src/dev/build/lib/exec.ts | 2 +- src/dev/build/lib/fs.ts | 2 +- .../lib/integration_tests/download.test.ts | 8 +- src/dev/build/lib/runner.test.ts | 8 +- src/dev/build/lib/runner.ts | 4 +- .../tasks/build_kibana_platform_plugins.ts | 2 +- src/dev/build/tasks/create_archives_task.ts | 2 +- .../generate_packages_optimized_assets.ts | 2 +- .../nodejs/download_node_builds_task.test.ts | 7 +- .../nodejs/extract_node_builds_task.test.ts | 8 +- .../build/tasks/nodejs/node_shasums.test.ts | 2 +- src/dev/build/tasks/nodejs/node_shasums.ts | 2 +- .../verify_existing_node_builds_task.test.ts | 8 +- .../docker_generator/bundle_dockerfiles.ts | 2 +- .../tasks/os_packages/docker_generator/run.ts | 2 +- src/dev/build/tasks/os_packages/run_fpm.ts | 2 +- .../build/tasks/patch_native_modules_task.ts | 2 +- src/dev/chromium_version.ts | 3 +- .../__tests__/enumerate_patterns.test.js | 2 +- .../__tests__/transforms.test.js | 2 +- src/dev/eslint/lint_files.ts | 3 +- src/dev/eslint/pick_files_to_lint.ts | 2 +- src/dev/github/search_and_save_pr_list.ts | 2 +- src/dev/i18n/integrate_locale_files.ts | 2 +- src/dev/i18n/tasks/check_compatibility.ts | 2 +- src/dev/notice/cli.js | 2 +- src/dev/notice/generate_notice_from_source.ts | 2 +- src/dev/run_check_published_api_changes.ts | 3 +- src/dev/run_i18n_check.ts | 4 +- src/dev/storybook/commands/clean.ts | 2 +- src/dev/typescript/build_ts_refs.ts | 3 +- .../typescript/ref_output_cache/archives.ts | 2 +- .../integration_tests/archives.test.ts | 5 +- .../ref_output_cache.test.ts | 8 +- .../ref_output_cache/ref_output_cache.ts | 3 +- .../typescript/ref_output_cache/repo_info.ts | 2 +- src/dev/typescript/root_refs_config.ts | 2 +- test/common/services/randomness.ts | 2 +- .../services/retry/retry_for_success.ts | 2 +- .../common/services/retry/retry_for_truthy.ts | 2 +- .../saved_object_info/saved_object_info.ts | 2 +- .../services/saved_object_info/utils.ts | 3 +- test/common/services/security/role.ts | 2 +- .../common/services/security/role_mappings.ts | 2 +- .../services/security/system_indices_user.ts | 2 +- test/common/services/security/user.ts | 2 +- test/functional/services/lib/compare_pngs.ts | 2 +- .../web_element_wrapper.ts | 2 +- test/functional/services/remote/webdriver.ts | 2 +- .../install_all_packages.ts | 2 +- .../common/random_policy_id_generator.ts | 2 +- .../endpoint/resolver_generator_script.ts | 3 +- .../scripts/endpoint/trusted_apps/index.ts | 2 +- x-pack/tasks/build.ts | 3 +- .../tests/alerts/wait_for_rule_status.ts | 2 +- .../tests/create_endpoint_exceptions.ts | 2 +- .../utils/count_down_es.ts | 2 +- .../utils/count_down_test.ts | 2 +- .../create_container_with_endpoint_entries.ts | 2 +- .../utils/create_container_with_entries.ts | 2 +- .../utils/create_exception_list.ts | 2 +- .../utils/create_exception_list_item.ts | 2 +- .../utils/create_new_action.ts | 2 +- .../utils/create_rule.ts | 2 +- .../create_rule_with_exception_entries.ts | 2 +- .../utils/create_signals_index.ts | 2 +- .../utils/delete_all_alerts.ts | 2 +- .../delete_all_event_log_execution_events.ts | 2 +- .../utils/delete_all_rule_execution_info.ts | 2 +- .../utils/delete_exception_list.ts | 2 +- .../utils/delete_rule.ts | 2 +- .../utils/delete_signals_index.ts | 2 +- .../utils/downgrade_immutable_rule.ts | 2 +- .../utils/finalize_signals_migration.ts | 2 +- .../utils/find_immutable_rule_by_id.ts | 2 +- .../get_event_log_execute_complete_by_id.ts | 2 +- .../utils/get_open_signals.ts | 2 +- .../utils/get_prepackaged_rule_status.ts | 2 +- .../utils/get_rule.ts | 2 +- .../utils/get_security_telemetry_stats.ts | 2 +- .../utils/get_signals_by_id.ts | 2 +- .../utils/get_signals_by_ids.ts | 2 +- .../utils/get_signals_by_rule_ids.ts | 2 +- .../utils/get_stats.ts | 2 +- .../utils/index_event_log_execution_events.ts | 2 +- .../utils/install_prepackaged_rules.ts | 2 +- .../utils/start_signals_migration.ts | 2 +- .../utils/update_rule.ts | 2 +- .../utils/wait_for.ts | 2 +- .../utils/wait_for_alert_to_complete.ts | 2 +- .../wait_for_event_log_execute_complete.ts | 2 +- .../utils/wait_for_index_to_populate.ts | 2 +- .../utils/wait_for_rule_success_or_status.ts | 2 +- .../utils/wait_for_signals_to_be_present.ts | 2 +- x-pack/test/fleet_api_integration/helpers.ts | 2 +- x-pack/test/fleet_cypress/agent.ts | 2 +- x-pack/test/fleet_cypress/fleet_server.ts | 2 +- .../apps/api_keys/api_keys_helpers.ts | 2 +- .../functional/page_objects/log_wrapper.ts | 2 +- x-pack/test/functional_synthetics/helpers.ts | 2 +- x-pack/test/lists_api_integration/utils.ts | 2 +- x-pack/test/osquery_cypress/agent.ts | 2 +- x-pack/test/osquery_cypress/fleet_server.ts | 2 +- .../test/saved_objects_field_count/runner.ts | 2 +- ...onfig.stack_functional_integration_base.js | 2 +- .../common/services/features.ts | 2 +- .../common/services/ui_capabilities.ts | 2 +- yarn.lock | 56 ++ 329 files changed, 2067 insertions(+), 633 deletions(-) create mode 100644 packages/kbn-ci-stats-client/BUILD.bazel create mode 100644 packages/kbn-ci-stats-client/README.md create mode 100644 packages/kbn-ci-stats-client/jest.config.js create mode 100644 packages/kbn-ci-stats-client/package.json rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-client/src}/ci_stats_client.ts (93%) rename packages/{kbn-dev-utils/src/stdio => kbn-ci-stats-client/src}/index.ts (83%) create mode 100644 packages/kbn-ci-stats-client/tsconfig.json create mode 100644 packages/kbn-ci-stats-core/BUILD.bazel create mode 100644 packages/kbn-ci-stats-core/README.md create mode 100644 packages/kbn-ci-stats-core/jest.config.js create mode 100644 packages/kbn-ci-stats-core/package.json rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-core/src}/ci_stats_config.ts (97%) rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-core/src}/ci_stats_metadata.ts (100%) rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-core/src}/index.ts (66%) create mode 100644 packages/kbn-ci-stats-core/tsconfig.json create mode 100644 packages/kbn-ci-stats-reporter/BUILD.bazel rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-reporter}/README.md (100%) create mode 100644 packages/kbn-ci-stats-reporter/jest.config.js create mode 100644 packages/kbn-ci-stats-reporter/package.json rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-reporter/src}/ci_stats_reporter.ts (98%) rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-reporter/src}/ci_stats_test_group_types.ts (97%) create mode 100644 packages/kbn-ci-stats-reporter/src/index.ts rename packages/{kbn-dev-utils/src/ci_stats_reporter => kbn-ci-stats-reporter/src}/report_time.ts (87%) create mode 100644 packages/kbn-ci-stats-reporter/tsconfig.json delete mode 100644 packages/kbn-dev-utils/ci_stats_reporter/package.json delete mode 100644 packages/kbn-dev-utils/sort_package_json/package.json rename packages/kbn-dev-utils/src/{ci_stats_reporter => }/ship_ci_stats_cli.ts (94%) delete mode 100644 packages/kbn-dev-utils/stdio/package.json delete mode 100644 packages/kbn-dev-utils/tooling_log/package.json create mode 100644 packages/kbn-jest-serializers/BUILD.bazel create mode 100644 packages/kbn-jest-serializers/README.md create mode 100644 packages/kbn-jest-serializers/jest.config.js create mode 100644 packages/kbn-jest-serializers/package.json rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/absolute_path_serializer.ts (100%) rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/any_instance_serizlizer.ts (100%) create mode 100644 packages/kbn-jest-serializers/src/index.ts rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/recursive_serializer.ts (100%) rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/replace_serializer.ts (100%) rename packages/{kbn-dev-utils/src/serializers => kbn-jest-serializers/src}/strip_ansi_serializer.ts (100%) create mode 100644 packages/kbn-jest-serializers/tsconfig.json create mode 100644 packages/kbn-sort-package-json/BUILD.bazel create mode 100644 packages/kbn-sort-package-json/README.md create mode 100644 packages/kbn-sort-package-json/jest.config.js create mode 100644 packages/kbn-sort-package-json/package.json rename packages/{kbn-dev-utils/src/sort_package_json.ts => kbn-sort-package-json/src/index.ts} (100%) create mode 100644 packages/kbn-sort-package-json/tsconfig.json create mode 100644 packages/kbn-stdio-dev-helpers/BUILD.bazel create mode 100644 packages/kbn-stdio-dev-helpers/README.md create mode 100644 packages/kbn-stdio-dev-helpers/jest.config.js create mode 100644 packages/kbn-stdio-dev-helpers/package.json rename packages/{kbn-dev-utils/src/serializers => kbn-stdio-dev-helpers/src}/index.ts (63%) rename packages/{kbn-dev-utils/src/stdio => kbn-stdio-dev-helpers/src}/observe_lines.ts (100%) rename packages/{kbn-dev-utils/src/stdio => kbn-stdio-dev-helpers/src}/observe_readable.ts (100%) create mode 100644 packages/kbn-stdio-dev-helpers/tsconfig.json create mode 100644 packages/kbn-tooling-log/BUILD.bazel create mode 100644 packages/kbn-tooling-log/README.md create mode 100644 packages/kbn-tooling-log/jest.config.js create mode 100644 packages/kbn-tooling-log/package.json rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/__snapshots__/log_levels.test.ts.snap (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/__snapshots__/tooling_log.test.ts.snap (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/__snapshots__/tooling_log_text_writer.test.ts.snap (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/index.ts (85%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/log_levels.test.ts (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/log_levels.ts (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/message.ts (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log.test.ts (98%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log.ts (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log_collecting_writer.ts (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log_text_writer.test.ts (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/tooling_log_text_writer.ts (100%) rename packages/{kbn-dev-utils/src/tooling_log => kbn-tooling-log/src}/writer.ts (100%) create mode 100644 packages/kbn-tooling-log/tsconfig.json diff --git a/package.json b/package.json index 9c96dc4b6f665..fdd508d18c0ac 100644 --- a/package.json +++ b/package.json @@ -481,6 +481,9 @@ "@kbn/babel-plugin-synthetic-packages": "link:bazel-bin/packages/kbn-babel-plugin-synthetic-packages", "@kbn/babel-preset": "link:bazel-bin/packages/kbn-babel-preset", "@kbn/bazel-packages": "link:bazel-bin/packages/kbn-bazel-packages", + "@kbn/ci-stats-client": "link:bazel-bin/packages/kbn-ci-stats-client", + "@kbn/ci-stats-core": "link:bazel-bin/packages/kbn-ci-stats-core", + "@kbn/ci-stats-reporter": "link:bazel-bin/packages/kbn-ci-stats-reporter", "@kbn/cli-dev-mode": "link:bazel-bin/packages/kbn-cli-dev-mode", "@kbn/dev-utils": "link:bazel-bin/packages/kbn-dev-utils", "@kbn/docs-utils": "link:bazel-bin/packages/kbn-docs-utils", @@ -491,17 +494,21 @@ "@kbn/find-used-node-modules": "link:bazel-bin/packages/kbn-find-used-node-modules", "@kbn/generate": "link:bazel-bin/packages/kbn-generate", "@kbn/import-resolver": "link:bazel-bin/packages/kbn-import-resolver", + "@kbn/jest-serializers": "link:bazel-bin/packages/kbn-jest-serializers", "@kbn/optimizer": "link:bazel-bin/packages/kbn-optimizer", "@kbn/plugin-generator": "link:bazel-bin/packages/kbn-plugin-generator", "@kbn/plugin-helpers": "link:bazel-bin/packages/kbn-plugin-helpers", "@kbn/pm": "link:packages/kbn-pm", + "@kbn/sort-package-json": "link:bazel-bin/packages/kbn-sort-package-json", "@kbn/spec-to-console": "link:bazel-bin/packages/kbn-spec-to-console", + "@kbn/stdio-dev-helpers": "link:bazel-bin/packages/kbn-stdio-dev-helpers", "@kbn/storybook": "link:bazel-bin/packages/kbn-storybook", "@kbn/synthetic-package-map": "link:bazel-bin/packages/kbn-synthetic-package-map", "@kbn/telemetry-tools": "link:bazel-bin/packages/kbn-telemetry-tools", "@kbn/test": "link:bazel-bin/packages/kbn-test", "@kbn/test-jest-helpers": "link:bazel-bin/packages/kbn-test-jest-helpers", "@kbn/test-subj-selector": "link:bazel-bin/packages/kbn-test-subj-selector", + "@kbn/tooling-log": "link:bazel-bin/packages/kbn-tooling-log", "@kbn/type-summarizer": "link:bazel-bin/packages/kbn-type-summarizer", "@loaders.gl/polyfills": "^2.3.5", "@mapbox/vector-tile": "1.3.1", @@ -600,6 +607,9 @@ "@types/kbn__apm-utils": "link:bazel-bin/packages/kbn-apm-utils/npm_module_types", "@types/kbn__axe-config": "link:bazel-bin/packages/kbn-axe-config/npm_module_types", "@types/kbn__bazel-packages": "link:bazel-bin/packages/kbn-bazel-packages/npm_module_types", + "@types/kbn__ci-stats-client": "link:bazel-bin/packages/kbn-ci-stats-client/npm_module_types", + "@types/kbn__ci-stats-core": "link:bazel-bin/packages/kbn-ci-stats-core/npm_module_types", + "@types/kbn__ci-stats-reporter": "link:bazel-bin/packages/kbn-ci-stats-reporter/npm_module_types", "@types/kbn__cli-dev-mode": "link:bazel-bin/packages/kbn-cli-dev-mode/npm_module_types", "@types/kbn__coloring": "link:bazel-bin/packages/kbn-coloring/npm_module_types", "@types/kbn__config": "link:bazel-bin/packages/kbn-config/npm_module_types", @@ -620,6 +630,7 @@ "@types/kbn__import-resolver": "link:bazel-bin/packages/kbn-import-resolver/npm_module_types", "@types/kbn__interpreter": "link:bazel-bin/packages/kbn-interpreter/npm_module_types", "@types/kbn__io-ts-utils": "link:bazel-bin/packages/kbn-io-ts-utils/npm_module_types", + "@types/kbn__jest-serializers": "link:bazel-bin/packages/kbn-jest-serializers/npm_module_types", "@types/kbn__logging": "link:bazel-bin/packages/kbn-logging/npm_module_types", "@types/kbn__logging-mocks": "link:bazel-bin/packages/kbn-logging-mocks/npm_module_types", "@types/kbn__mapbox-gl": "link:bazel-bin/packages/kbn-mapbox-gl/npm_module_types", @@ -651,11 +662,14 @@ "@types/kbn__shared-ux-services": "link:bazel-bin/packages/kbn-shared-ux-services/npm_module_types", "@types/kbn__shared-ux-storybook": "link:bazel-bin/packages/kbn-shared-ux-storybook/npm_module_types", "@types/kbn__shared-ux-utility": "link:bazel-bin/packages/kbn-shared-ux-utility/npm_module_types", + "@types/kbn__sort-package-json": "link:bazel-bin/packages/kbn-sort-package-json/npm_module_types", "@types/kbn__std": "link:bazel-bin/packages/kbn-std/npm_module_types", + "@types/kbn__stdio-dev-helpers": "link:bazel-bin/packages/kbn-stdio-dev-helpers/npm_module_types", "@types/kbn__storybook": "link:bazel-bin/packages/kbn-storybook/npm_module_types", "@types/kbn__telemetry-tools": "link:bazel-bin/packages/kbn-telemetry-tools/npm_module_types", "@types/kbn__test": "link:bazel-bin/packages/kbn-test/npm_module_types", "@types/kbn__test-jest-helpers": "link:bazel-bin/packages/kbn-test-jest-helpers/npm_module_types", + "@types/kbn__tooling-log": "link:bazel-bin/packages/kbn-tooling-log/npm_module_types", "@types/kbn__typed-react-router-config": "link:bazel-bin/packages/kbn-typed-react-router-config/npm_module_types", "@types/kbn__ui-shared-deps-npm": "link:bazel-bin/packages/kbn-ui-shared-deps-npm/npm_module_types", "@types/kbn__ui-shared-deps-src": "link:bazel-bin/packages/kbn-ui-shared-deps-src/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index 3e05f7f745b6e..de953cfd93af0 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -24,6 +24,9 @@ filegroup( "//packages/kbn-babel-plugin-synthetic-packages:build", "//packages/kbn-babel-preset:build", "//packages/kbn-bazel-packages:build", + "//packages/kbn-ci-stats-client:build", + "//packages/kbn-ci-stats-core:build", + "//packages/kbn-ci-stats-reporter:build", "//packages/kbn-cli-dev-mode:build", "//packages/kbn-coloring:build", "//packages/kbn-config-schema:build", @@ -48,6 +51,7 @@ filegroup( "//packages/kbn-import-resolver:build", "//packages/kbn-interpreter:build", "//packages/kbn-io-ts-utils:build", + "//packages/kbn-jest-serializers:build", "//packages/kbn-logging-mocks:build", "//packages/kbn-logging:build", "//packages/kbn-mapbox-gl:build", @@ -78,8 +82,10 @@ filegroup( "//packages/kbn-shared-ux-services:build", "//packages/kbn-shared-ux-storybook:build", "//packages/kbn-shared-ux-utility:build", + "//packages/kbn-sort-package-json:build", "//packages/kbn-spec-to-console:build", "//packages/kbn-std:build", + "//packages/kbn-stdio-dev-helpers:build", "//packages/kbn-storybook:build", "//packages/kbn-synthetic-package-map:build", "//packages/kbn-telemetry-tools:build", @@ -88,6 +94,7 @@ filegroup( "//packages/kbn-test:build", "//packages/kbn-timelion-grammar:build", "//packages/kbn-tinymath:build", + "//packages/kbn-tooling-log:build", "//packages/kbn-type-summarizer:build", "//packages/kbn-typed-react-router-config:build", "//packages/kbn-ui-framework:build", @@ -114,6 +121,9 @@ filegroup( "//packages/kbn-apm-utils:build_types", "//packages/kbn-axe-config:build_types", "//packages/kbn-bazel-packages:build_types", + "//packages/kbn-ci-stats-client:build_types", + "//packages/kbn-ci-stats-core:build_types", + "//packages/kbn-ci-stats-reporter:build_types", "//packages/kbn-cli-dev-mode:build_types", "//packages/kbn-coloring:build_types", "//packages/kbn-config-schema:build_types", @@ -134,6 +144,7 @@ filegroup( "//packages/kbn-import-resolver:build_types", "//packages/kbn-interpreter:build_types", "//packages/kbn-io-ts-utils:build_types", + "//packages/kbn-jest-serializers:build_types", "//packages/kbn-logging-mocks:build_types", "//packages/kbn-logging:build_types", "//packages/kbn-mapbox-gl:build_types", @@ -164,11 +175,14 @@ filegroup( "//packages/kbn-shared-ux-services:build_types", "//packages/kbn-shared-ux-storybook:build_types", "//packages/kbn-shared-ux-utility:build_types", + "//packages/kbn-sort-package-json:build_types", "//packages/kbn-std:build_types", + "//packages/kbn-stdio-dev-helpers:build_types", "//packages/kbn-storybook:build_types", "//packages/kbn-telemetry-tools:build_types", "//packages/kbn-test-jest-helpers:build_types", "//packages/kbn-test:build_types", + "//packages/kbn-tooling-log:build_types", "//packages/kbn-type-summarizer:build_types", "//packages/kbn-typed-react-router-config:build_types", "//packages/kbn-ui-shared-deps-npm:build_types", diff --git a/packages/elastic-eslint-config-kibana/.eslintrc.js b/packages/elastic-eslint-config-kibana/.eslintrc.js index 5882dbc57c2f9..eba5332ca71e3 100644 --- a/packages/elastic-eslint-config-kibana/.eslintrc.js +++ b/packages/elastic-eslint-config-kibana/.eslintrc.js @@ -105,6 +105,90 @@ module.exports = { ], ], + /** + * ESLint rule to aid with breaking up packages: + * + * `fromPacakge` the package name which was broken up + * `toPackage` the package where the removed exports were placed + * `exportNames` the list of exports which used to be found in `fromPacakge` and are now found in `toPackage` + * + * TODO(@spalger): once packages have types we should be able to filter this rule based on the package type + * of the file being linted so that we could re-route imports from `plugin-client` types to a different package + * than `plugin-server` types. + */ + '@kbn/imports/exports_moved_packages': ['error', [ + { + fromPackage: '@kbn/dev-utils', + toPackage: '@kbn/tooling-log', + exportNames: [ + 'DEFAULT_LOG_LEVEL', + 'getLogLevelFlagsHelp', + 'LOG_LEVEL_FLAGS', + 'LogLevel', + 'Message', + 'ParsedLogLevel', + 'parseLogLevel', + 'pickLevelFromFlags', + 'ToolingLog', + 'ToolingLogCollectingWriter', + 'ToolingLogOptions', + 'ToolingLogTextWriter', + 'ToolingLogTextWriterConfig', + 'Writer', + ] + }, + { + fromPackage: '@kbn/dev-utils', + toPackage: '@kbn/ci-stats-reporter', + exportNames: [ + 'CiStatsMetric', + 'CiStatsReporter', + 'CiStatsReportTestsOptions', + 'CiStatsTestGroupInfo', + 'CiStatsTestResult', + 'CiStatsTestRun', + 'CiStatsTestType', + 'CiStatsTiming', + 'getTimeReporter', + 'MetricsOptions', + 'TimingsOptions', + ] + }, + { + fromPackage: '@kbn/dev-utils', + toPackage: '@kbn/ci-stats-core', + exportNames: [ + 'Config', + ] + }, + { + fromPackage: '@kbn/dev-utils', + toPackage: '@kbn/jest-serializers', + exportNames: [ + 'createAbsolutePathSerializer', + 'createStripAnsiSerializer', + 'createRecursiveSerializer', + 'createAnyInstanceSerializer', + 'createReplaceSerializer', + ] + }, + { + fromPackage: '@kbn/dev-utils', + toPackage: '@kbn/stdio-dev-helpers', + exportNames: [ + 'observeReadable', + 'observeLines', + ] + }, + { + fromPackage: '@kbn/dev-utils', + toPackage: '@kbn/sort-package-json', + exportNames: [ + 'sortPackageJson', + ] + }, + ]], + '@kbn/eslint/no_async_promise_body': 'error', '@kbn/eslint/no_async_foreach': 'error', '@kbn/eslint/no_trailing_import_slash': 'error', diff --git a/packages/kbn-ci-stats-client/BUILD.bazel b/packages/kbn-ci-stats-client/BUILD.bazel new file mode 100644 index 0000000000000..7017adc604416 --- /dev/null +++ b/packages/kbn-ci-stats-client/BUILD.bazel @@ -0,0 +1,120 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-ci-stats-client" +PKG_REQUIRE_NAME = "@kbn/ci-stats-client" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//axios", + "//packages/kbn-ci-stats-core", + "//packages/kbn-tooling-log", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//axios", + "//packages/kbn-ci-stats-core:npm_module_types", + "//packages/kbn-tooling-log:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-ci-stats-client/README.md b/packages/kbn-ci-stats-client/README.md new file mode 100644 index 0000000000000..d1f6c59e978c9 --- /dev/null +++ b/packages/kbn-ci-stats-client/README.md @@ -0,0 +1,3 @@ +# @kbn/ci-stats-client + +Client for reading data stored at https://ci-stats.kibana.dev \ No newline at end of file diff --git a/packages/kbn-ci-stats-client/jest.config.js b/packages/kbn-ci-stats-client/jest.config.js new file mode 100644 index 0000000000000..d855d7886d0d7 --- /dev/null +++ b/packages/kbn-ci-stats-client/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-ci-stats-client'], +}; diff --git a/packages/kbn-ci-stats-client/package.json b/packages/kbn-ci-stats-client/package.json new file mode 100644 index 0000000000000..709f6a3454d59 --- /dev/null +++ b/packages/kbn-ci-stats-client/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/ci-stats-client", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "kibana": { + "devOnly": true + } +} diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts b/packages/kbn-ci-stats-client/src/ci_stats_client.ts similarity index 93% rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts rename to packages/kbn-ci-stats-client/src/ci_stats_client.ts index 77b3769fe62c1..a7ab6f1cc4cb8 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_client.ts +++ b/packages/kbn-ci-stats-client/src/ci_stats_client.ts @@ -7,10 +7,9 @@ */ import Axios from 'axios'; -import { ToolingLog } from '../tooling_log'; +import { ToolingLog } from '@kbn/tooling-log'; -import { parseConfig, Config } from './ci_stats_config'; -import { CiStatsMetadata } from './ci_stats_metadata'; +import { parseConfig, Config, CiStatsMetadata } from '@kbn/ci-stats-core'; interface LatestTestGroupStatsOptions { /** The Kibana branch to get stats for, eg "main" */ diff --git a/packages/kbn-dev-utils/src/stdio/index.ts b/packages/kbn-ci-stats-client/src/index.ts similarity index 83% rename from packages/kbn-dev-utils/src/stdio/index.ts rename to packages/kbn-ci-stats-client/src/index.ts index cdbd1808db255..ac32c69b9f7b7 100644 --- a/packages/kbn-dev-utils/src/stdio/index.ts +++ b/packages/kbn-ci-stats-client/src/index.ts @@ -6,5 +6,4 @@ * Side Public License, v 1. */ -export * from './observe_lines'; -export * from './observe_readable'; +export { CiStatsClient } from './ci_stats_client'; diff --git a/packages/kbn-ci-stats-client/tsconfig.json b/packages/kbn-ci-stats-client/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-ci-stats-client/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-ci-stats-core/BUILD.bazel b/packages/kbn-ci-stats-core/BUILD.bazel new file mode 100644 index 0000000000000..421ec5e1961d9 --- /dev/null +++ b/packages/kbn-ci-stats-core/BUILD.bazel @@ -0,0 +1,116 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-ci-stats-core" +PKG_REQUIRE_NAME = "@kbn/ci-stats-core" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "//packages/kbn-tooling-log", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "//packages/kbn-tooling-log:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-ci-stats-core/README.md b/packages/kbn-ci-stats-core/README.md new file mode 100644 index 0000000000000..b2e34a492b745 --- /dev/null +++ b/packages/kbn-ci-stats-core/README.md @@ -0,0 +1,3 @@ +# @kbn/ci-stats-core + +Config and types used by `@kbn/ci-stats-client` and `@kbn/ci-stats-reporter`. \ No newline at end of file diff --git a/packages/kbn-ci-stats-core/jest.config.js b/packages/kbn-ci-stats-core/jest.config.js new file mode 100644 index 0000000000000..0feb7b4e1b872 --- /dev/null +++ b/packages/kbn-ci-stats-core/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-ci-stats-core'], +}; diff --git a/packages/kbn-ci-stats-core/package.json b/packages/kbn-ci-stats-core/package.json new file mode 100644 index 0000000000000..d1141ec3c55a8 --- /dev/null +++ b/packages/kbn-ci-stats-core/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/ci-stats-core", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "kibana": { + "devOnly": true + } +} diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts b/packages/kbn-ci-stats-core/src/ci_stats_config.ts similarity index 97% rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts rename to packages/kbn-ci-stats-core/src/ci_stats_config.ts index f73b9c830a2ab..c97d99c53bf6a 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_config.ts +++ b/packages/kbn-ci-stats-core/src/ci_stats_config.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { ToolingLog } from '../tooling_log'; +import type { ToolingLog } from '@kbn/tooling-log'; /** * Information about how CiStatsReporter should talk to the ci-stats service. Normally diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_metadata.ts b/packages/kbn-ci-stats-core/src/ci_stats_metadata.ts similarity index 100% rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_metadata.ts rename to packages/kbn-ci-stats-core/src/ci_stats_metadata.ts diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/index.ts b/packages/kbn-ci-stats-core/src/index.ts similarity index 66% rename from packages/kbn-dev-utils/src/ci_stats_reporter/index.ts rename to packages/kbn-ci-stats-core/src/index.ts index fab2e61755a5c..5b39370eb17e1 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/index.ts +++ b/packages/kbn-ci-stats-core/src/index.ts @@ -6,9 +6,6 @@ * Side Public License, v 1. */ -export * from './ci_stats_reporter'; export type { Config } from './ci_stats_config'; -export * from './ship_ci_stats_cli'; -export { getTimeReporter } from './report_time'; -export * from './ci_stats_test_group_types'; -export * from './ci_stats_client'; +export { parseConfig } from './ci_stats_config'; +export type { CiStatsMetadata } from './ci_stats_metadata'; diff --git a/packages/kbn-ci-stats-core/tsconfig.json b/packages/kbn-ci-stats-core/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-ci-stats-core/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-ci-stats-reporter/BUILD.bazel b/packages/kbn-ci-stats-reporter/BUILD.bazel new file mode 100644 index 0000000000000..41ff5a697977c --- /dev/null +++ b/packages/kbn-ci-stats-reporter/BUILD.bazel @@ -0,0 +1,122 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-ci-stats-reporter" +PKG_REQUIRE_NAME = "@kbn/ci-stats-reporter" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//axios", + "@npm//execa", + "//packages/kbn-tooling-log", + "//packages/kbn-ci-stats-core", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//axios", + "@npm//execa", + "@npm//@types/node", + "@npm//@types/jest", + "//packages/kbn-tooling-log:npm_module_types", + "//packages/kbn-ci-stats-core:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/README.md b/packages/kbn-ci-stats-reporter/README.md similarity index 100% rename from packages/kbn-dev-utils/src/ci_stats_reporter/README.md rename to packages/kbn-ci-stats-reporter/README.md diff --git a/packages/kbn-ci-stats-reporter/jest.config.js b/packages/kbn-ci-stats-reporter/jest.config.js new file mode 100644 index 0000000000000..bf58324f440a3 --- /dev/null +++ b/packages/kbn-ci-stats-reporter/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-ci-stats-reporter'], +}; diff --git a/packages/kbn-ci-stats-reporter/package.json b/packages/kbn-ci-stats-reporter/package.json new file mode 100644 index 0000000000000..01743bced98d5 --- /dev/null +++ b/packages/kbn-ci-stats-reporter/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/ci-stats-reporter", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "kibana": { + "devOnly": true + } +} diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts b/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts similarity index 98% rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts rename to packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts index 367a1be175266..d709927787b0e 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_reporter.ts +++ b/packages/kbn-ci-stats-reporter/src/ci_stats_reporter.ts @@ -16,11 +16,10 @@ import execa from 'execa'; import Axios, { AxiosRequestConfig } from 'axios'; // @ts-expect-error not "public", but necessary to prevent Jest shimming from breaking things import httpAdapter from 'axios/lib/adapters/http'; +import { ToolingLog } from '@kbn/tooling-log'; -import { ToolingLog } from '../tooling_log'; -import { parseConfig, Config } from './ci_stats_config'; +import { parseConfig, Config, CiStatsMetadata } from '@kbn/ci-stats-core'; import type { CiStatsTestGroupInfo, CiStatsTestRun } from './ci_stats_test_group_types'; -import { CiStatsMetadata } from './ci_stats_metadata'; const BASE_URL = 'https://ci-stats.kibana.dev'; diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts b/packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts similarity index 97% rename from packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts rename to packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts index b786981fb8437..223273ca82cd3 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/ci_stats_test_group_types.ts +++ b/packages/kbn-ci-stats-reporter/src/ci_stats_test_group_types.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { CiStatsMetadata } from './ci_stats_metadata'; +import type { CiStatsMetadata } from '@kbn/ci-stats-core'; export type CiStatsTestResult = 'fail' | 'pass' | 'skip'; export type CiStatsTestType = diff --git a/packages/kbn-ci-stats-reporter/src/index.ts b/packages/kbn-ci-stats-reporter/src/index.ts new file mode 100644 index 0000000000000..aa797f97f2603 --- /dev/null +++ b/packages/kbn-ci-stats-reporter/src/index.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { + CiStatsMetric, + CiStatsReportTestsOptions, + CiStatsTiming, + MetricsOptions, + TimingsOptions, +} from './ci_stats_reporter'; +export { CiStatsReporter } from './ci_stats_reporter'; +export { getTimeReporter } from './report_time'; +export type { + CiStatsTestGroupInfo, + CiStatsTestResult, + CiStatsTestRun, + CiStatsTestType, +} from './ci_stats_test_group_types'; diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts b/packages/kbn-ci-stats-reporter/src/report_time.ts similarity index 87% rename from packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts rename to packages/kbn-ci-stats-reporter/src/report_time.ts index d10250a03f091..20cb8fc9ef86d 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/report_time.ts +++ b/packages/kbn-ci-stats-reporter/src/report_time.ts @@ -6,7 +6,9 @@ * Side Public License, v 1. */ -import { CiStatsReporter, ToolingLog } from '..'; +import { ToolingLog } from '@kbn/tooling-log'; + +import { CiStatsReporter } from './ci_stats_reporter'; export const getTimeReporter = (log: ToolingLog, group: string) => { const reporter = CiStatsReporter.fromEnv(log); diff --git a/packages/kbn-ci-stats-reporter/tsconfig.json b/packages/kbn-ci-stats-reporter/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-ci-stats-reporter/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts b/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts index 0066644d0825a..6dd96cbb0634b 100644 --- a/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts +++ b/packages/kbn-cli-dev-mode/src/cli_dev_mode.test.ts @@ -8,7 +8,7 @@ import Path from 'path'; import * as Rx from 'rxjs'; -import { createAbsolutePathSerializer, createAnyInstanceSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer, createAnyInstanceSerializer } from '@kbn/jest-serializers'; import { REPO_ROOT } from '@kbn/utils'; @@ -32,8 +32,8 @@ const { DevServer } = jest.requireMock('./dev_server'); jest.mock('./base_path_proxy_server'); const { BasePathProxyServer } = jest.requireMock('./base_path_proxy_server'); -jest.mock('@kbn/dev-utils/ci_stats_reporter'); -const { CiStatsReporter } = jest.requireMock('@kbn/dev-utils/ci_stats_reporter'); +jest.mock('@kbn/ci-stats-reporter'); +const { CiStatsReporter } = jest.requireMock('@kbn/ci-stats-reporter'); jest.mock('./get_server_watch_paths', () => ({ getServerWatchPaths: jest.fn(() => ({ diff --git a/packages/kbn-cli-dev-mode/src/cli_dev_mode.ts b/packages/kbn-cli-dev-mode/src/cli_dev_mode.ts index 9cf688b675e67..ccd3e61214463 100644 --- a/packages/kbn-cli-dev-mode/src/cli_dev_mode.ts +++ b/packages/kbn-cli-dev-mode/src/cli_dev_mode.ts @@ -22,7 +22,7 @@ import { takeUntil, } from 'rxjs/operators'; import { CliArgs } from '@kbn/config'; -import { CiStatsReporter } from '@kbn/dev-utils'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; import { REPO_ROOT } from '@kbn/utils'; import { Log, CliLog } from './log'; diff --git a/packages/kbn-cli-dev-mode/src/dev_server.ts b/packages/kbn-cli-dev-mode/src/dev_server.ts index 750f93dd6c58c..bed1afe126c15 100644 --- a/packages/kbn-cli-dev-mode/src/dev_server.ts +++ b/packages/kbn-cli-dev-mode/src/dev_server.ts @@ -18,7 +18,7 @@ import { takeUntil, ignoreElements, } from 'rxjs/operators'; -import { observeLines } from '@kbn/dev-utils'; +import { observeLines } from '@kbn/stdio-dev-helpers'; import { usingServerProcess } from './using_server_process'; import { Watcher } from './watcher'; diff --git a/packages/kbn-cli-dev-mode/src/get_server_watch_paths.test.ts b/packages/kbn-cli-dev-mode/src/get_server_watch_paths.test.ts index 12074bf493218..6291c07b4f266 100644 --- a/packages/kbn-cli-dev-mode/src/get_server_watch_paths.test.ts +++ b/packages/kbn-cli-dev-mode/src/get_server_watch_paths.test.ts @@ -8,7 +8,7 @@ import Path from 'path'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { REPO_ROOT } from '@kbn/utils'; import { getServerWatchPaths } from './get_server_watch_paths'; diff --git a/packages/kbn-cli-dev-mode/src/log.ts b/packages/kbn-cli-dev-mode/src/log.ts index dc38639f29e6e..4ddc4b0ebdbe2 100644 --- a/packages/kbn-cli-dev-mode/src/log.ts +++ b/packages/kbn-cli-dev-mode/src/log.ts @@ -9,7 +9,7 @@ /* eslint-disable max-classes-per-file */ import Chalk from 'chalk'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; export interface Log { toolingLog: ToolingLog; diff --git a/packages/kbn-cli-dev-mode/src/optimizer.test.ts b/packages/kbn-cli-dev-mode/src/optimizer.test.ts index c300b34d514d2..3cb847c9594e3 100644 --- a/packages/kbn-cli-dev-mode/src/optimizer.test.ts +++ b/packages/kbn-cli-dev-mode/src/optimizer.test.ts @@ -11,7 +11,8 @@ import { PassThrough } from 'stream'; import * as Rx from 'rxjs'; import { toArray } from 'rxjs/operators'; import { OptimizerUpdate } from '@kbn/optimizer'; -import { observeLines, createReplaceSerializer } from '@kbn/dev-utils'; +import { observeLines } from '@kbn/stdio-dev-helpers'; +import { createReplaceSerializer } from '@kbn/jest-serializers'; import { Optimizer, Options } from './optimizer'; diff --git a/packages/kbn-cli-dev-mode/src/optimizer.ts b/packages/kbn-cli-dev-mode/src/optimizer.ts index 3f7a6edc22314..60d84d2b42c85 100644 --- a/packages/kbn-cli-dev-mode/src/optimizer.ts +++ b/packages/kbn-cli-dev-mode/src/optimizer.ts @@ -15,7 +15,7 @@ import { pickLevelFromFlags, ToolingLogTextWriter, parseLogLevel, -} from '@kbn/dev-utils'; +} from '@kbn/tooling-log'; import * as Rx from 'rxjs'; import { ignoreElements } from 'rxjs/operators'; import { diff --git a/packages/kbn-dev-utils/BUILD.bazel b/packages/kbn-dev-utils/BUILD.bazel index 7b60e46d030a3..8138ff946fc29 100644 --- a/packages/kbn-dev-utils/BUILD.bazel +++ b/packages/kbn-dev-utils/BUILD.bazel @@ -36,17 +36,17 @@ filegroup( NPM_MODULE_EXTRA_FILES = [ "package.json", "README.md", - ":certs", - "ci_stats_reporter/package.json", - "sort_package_json/package.json", - "stdio/package.json", - "tooling_log/package.json" + ":certs" ] RUNTIME_DEPS = [ "//packages/kbn-std", "//packages/kbn-utils", "//packages/kbn-plugin-discovery", + "//packages/kbn-tooling-log", + "//packages/kbn-stdio-dev-helpers", + "//packages/kbn-ci-stats-reporter", + "//packages/kbn-jest-serializers", "@npm//@babel/core", "@npm//axios", "@npm//chalk", @@ -73,6 +73,10 @@ TYPES_DEPS = [ "//packages/kbn-std:npm_module_types", "//packages/kbn-utils:npm_module_types", "//packages/kbn-plugin-discovery:npm_module_types", + "//packages/kbn-tooling-log:npm_module_types", + "//packages/kbn-stdio-dev-helpers:npm_module_types", + "//packages/kbn-ci-stats-reporter:npm_module_types", + "//packages/kbn-jest-serializers:npm_module_types", "@npm//@babel/parser", "@npm//@babel/types", "@npm//@types/babel__core", diff --git a/packages/kbn-dev-utils/ci_stats_reporter/package.json b/packages/kbn-dev-utils/ci_stats_reporter/package.json deleted file mode 100644 index e20bd531a77ef..0000000000000 --- a/packages/kbn-dev-utils/ci_stats_reporter/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main": "../target_node/ci_stats_reporter/ci_stats_reporter", - "types": "../target_types/ci_stats_reporter/ci_stats_reporter" -} \ No newline at end of file diff --git a/packages/kbn-dev-utils/sort_package_json/package.json b/packages/kbn-dev-utils/sort_package_json/package.json deleted file mode 100644 index e075ec436de33..0000000000000 --- a/packages/kbn-dev-utils/sort_package_json/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main": "../target_node/sort_package_json", - "types": "../target_types/sort_package_json" -} \ No newline at end of file diff --git a/packages/kbn-dev-utils/src/index.ts b/packages/kbn-dev-utils/src/index.ts index cb75cbdf62782..ce8c54e0c7aba 100644 --- a/packages/kbn-dev-utils/src/index.ts +++ b/packages/kbn-dev-utils/src/index.ts @@ -7,8 +7,6 @@ */ export { withProcRunner, ProcRunner } from './proc_runner'; -export * from './tooling_log'; -export * from './serializers'; export { CA_CERT_PATH, ES_KEY_PATH, @@ -24,12 +22,10 @@ export { } from './certs'; export * from './run'; export * from './axios'; -export * from './stdio'; -export * from './ci_stats_reporter'; +export * from './ship_ci_stats_cli'; export * from './plugin_list'; export * from './streams'; export * from './babel'; export * from './extract'; export * from './vscode_config'; -export * from './sort_package_json'; export * from './diff_strings'; diff --git a/packages/kbn-dev-utils/src/proc_runner/proc.ts b/packages/kbn-dev-utils/src/proc_runner/proc.ts index 8238e29413309..0402feec99d47 100644 --- a/packages/kbn-dev-utils/src/proc_runner/proc.ts +++ b/packages/kbn-dev-utils/src/proc_runner/proc.ts @@ -17,8 +17,8 @@ import treeKill from 'tree-kill'; import { promisify } from 'util'; const treeKillAsync = promisify((...args: [number, string, any]) => treeKill(...args)); -import { ToolingLog } from '../tooling_log'; -import { observeLines } from '../stdio'; +import { ToolingLog } from '@kbn/tooling-log'; +import { observeLines } from '@kbn/stdio-dev-helpers'; import { createFailError } from '../run'; const SECOND = 1000; diff --git a/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts b/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts index cb2ac2604e035..3b7cf008df9a6 100644 --- a/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts +++ b/packages/kbn-dev-utils/src/proc_runner/proc_runner.ts @@ -10,7 +10,7 @@ import * as Rx from 'rxjs'; import { filter, first, catchError, map } from 'rxjs/operators'; import exitHook from 'exit-hook'; -import { ToolingLog } from '../tooling_log'; +import { ToolingLog } from '@kbn/tooling-log'; import { createFailError } from '../run'; import { Proc, ProcOptions, startProc } from './proc'; diff --git a/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.test.ts b/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.test.ts index 87a28e547ca33..4855744cfccca 100644 --- a/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.test.ts +++ b/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '../tooling_log'; +import { ToolingLog } from '@kbn/tooling-log'; import { withProcRunner } from './with_proc_runner'; import { ProcRunner } from './proc_runner'; diff --git a/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts b/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts index 1292bf45ad414..5c9bc8103bc62 100644 --- a/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts +++ b/packages/kbn-dev-utils/src/proc_runner/with_proc_runner.ts @@ -6,8 +6,9 @@ * Side Public License, v 1. */ +import { ToolingLog } from '@kbn/tooling-log'; + import { ProcRunner } from './proc_runner'; -import { ToolingLog } from '../tooling_log'; /** * Create a ProcRunner and pass it to an async function. When diff --git a/packages/kbn-dev-utils/src/run/cleanup.ts b/packages/kbn-dev-utils/src/run/cleanup.ts index ba0b762a562ad..87da0f1e704df 100644 --- a/packages/kbn-dev-utils/src/run/cleanup.ts +++ b/packages/kbn-dev-utils/src/run/cleanup.ts @@ -9,8 +9,8 @@ import { inspect } from 'util'; import exitHook from 'exit-hook'; +import { ToolingLog } from '@kbn/tooling-log'; -import { ToolingLog } from '../tooling_log'; import { isFailError } from './fail'; /** diff --git a/packages/kbn-dev-utils/src/run/flags.ts b/packages/kbn-dev-utils/src/run/flags.ts index 822ac261d4908..20357c8204ae7 100644 --- a/packages/kbn-dev-utils/src/run/flags.ts +++ b/packages/kbn-dev-utils/src/run/flags.ts @@ -8,8 +8,8 @@ import getopts from 'getopts'; +import { LOG_LEVEL_FLAGS, DEFAULT_LOG_LEVEL } from '@kbn/tooling-log'; import { RunOptions } from './run'; -import { LOG_LEVEL_FLAGS, DEFAULT_LOG_LEVEL } from '../tooling_log/log_levels'; export interface Flags { verbose: boolean; diff --git a/packages/kbn-dev-utils/src/run/help.ts b/packages/kbn-dev-utils/src/run/help.ts index 0da4e8146d198..3bf2738b82748 100644 --- a/packages/kbn-dev-utils/src/run/help.ts +++ b/packages/kbn-dev-utils/src/run/help.ts @@ -11,9 +11,9 @@ import Path from 'path'; import chalk from 'chalk'; import 'core-js/features/string/repeat'; import dedent from 'dedent'; +import { getLogLevelFlagsHelp } from '@kbn/tooling-log'; import { Command } from './run_with_commands'; -import { getLogLevelFlagsHelp } from '../tooling_log/log_levels'; const DEFAULT_GLOBAL_USAGE = `node ${Path.relative(process.cwd(), process.argv[1])}`; export const GLOBAL_FLAGS = dedent` diff --git a/packages/kbn-dev-utils/src/run/metrics.ts b/packages/kbn-dev-utils/src/run/metrics.ts index 90a005bfc64dd..36c80c659b016 100644 --- a/packages/kbn-dev-utils/src/run/metrics.ts +++ b/packages/kbn-dev-utils/src/run/metrics.ts @@ -9,8 +9,8 @@ import path from 'path'; import { REPO_ROOT } from '@kbn/utils'; import normalizePath from 'normalize-path'; -import { CiStatsReporter } from '../ci_stats_reporter'; -import { ToolingLog } from '../tooling_log'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; +import { ToolingLog } from '@kbn/tooling-log'; export type MetricsMeta = Map; diff --git a/packages/kbn-dev-utils/src/run/run.ts b/packages/kbn-dev-utils/src/run/run.ts index 8afed4339884c..17630826299f2 100644 --- a/packages/kbn-dev-utils/src/run/run.ts +++ b/packages/kbn-dev-utils/src/run/run.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { pickLevelFromFlags, ToolingLog, LogLevel } from '../tooling_log'; +import { pickLevelFromFlags, ToolingLog, LogLevel } from '@kbn/tooling-log'; import { createFlagError } from './fail'; import { Flags, getFlags, FlagOptions } from './flags'; import { ProcRunner, withProcRunner } from '../proc_runner'; diff --git a/packages/kbn-dev-utils/src/run/run_with_commands.test.ts b/packages/kbn-dev-utils/src/run/run_with_commands.test.ts index 357908bd2f56d..0005ab8f27c01 100644 --- a/packages/kbn-dev-utils/src/run/run_with_commands.test.ts +++ b/packages/kbn-dev-utils/src/run/run_with_commands.test.ts @@ -7,7 +7,7 @@ */ import { RunWithCommands } from './run_with_commands'; -import { ToolingLog, ToolingLogCollectingWriter } from '../tooling_log'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; import { ProcRunner } from '../proc_runner'; const testLog = new ToolingLog(); diff --git a/packages/kbn-dev-utils/src/run/run_with_commands.ts b/packages/kbn-dev-utils/src/run/run_with_commands.ts index 701f3fa965fc8..eb6df27a5fa53 100644 --- a/packages/kbn-dev-utils/src/run/run_with_commands.ts +++ b/packages/kbn-dev-utils/src/run/run_with_commands.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog, pickLevelFromFlags } from '../tooling_log'; +import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log'; import { RunContext, RunOptions } from './run'; import { getFlags, FlagOptions, mergeFlagOptions } from './flags'; import { Cleanup } from './cleanup'; diff --git a/packages/kbn-dev-utils/src/ci_stats_reporter/ship_ci_stats_cli.ts b/packages/kbn-dev-utils/src/ship_ci_stats_cli.ts similarity index 94% rename from packages/kbn-dev-utils/src/ci_stats_reporter/ship_ci_stats_cli.ts rename to packages/kbn-dev-utils/src/ship_ci_stats_cli.ts index 4d07b54b8cf03..6afd85e49361d 100644 --- a/packages/kbn-dev-utils/src/ci_stats_reporter/ship_ci_stats_cli.ts +++ b/packages/kbn-dev-utils/src/ship_ci_stats_cli.ts @@ -9,8 +9,9 @@ import Path from 'path'; import Fs from 'fs'; -import { CiStatsReporter } from './ci_stats_reporter'; -import { run, createFlagError, createFailError } from '../run'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; + +import { run, createFlagError, createFailError } from './run'; export function shipCiStatsCli() { run( diff --git a/packages/kbn-dev-utils/stdio/package.json b/packages/kbn-dev-utils/stdio/package.json deleted file mode 100644 index 9aa2d96e19f3f..0000000000000 --- a/packages/kbn-dev-utils/stdio/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main": "../target_node/stdio", - "types": "../target_types/stdio" -} \ No newline at end of file diff --git a/packages/kbn-dev-utils/tooling_log/package.json b/packages/kbn-dev-utils/tooling_log/package.json deleted file mode 100644 index 711a55b9ba335..0000000000000 --- a/packages/kbn-dev-utils/tooling_log/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "main": "../target_node/tooling_log", - "types": "../target_types/tooling_log" -} \ No newline at end of file diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts index 75c0bf4985b84..9b86db445c225 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/buid_api_declaration.test.ts @@ -8,7 +8,7 @@ import Path from 'path'; import { Project, Node } from 'ts-morph'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { TypeKind, ApiScope, PluginOrPackage } from '../types'; import { getKibanaPlatformPlugin } from '../tests/kibana_platform_plugin_mock'; diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts index bf8beadea4d91..809097ee73818 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/build_api_declaration.ts @@ -7,7 +7,7 @@ */ import { FunctionTypeNode, Node } from 'ts-morph'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { buildClassDec } from './build_class_dec'; import { buildFunctionDec } from './build_function_dec'; import { isNamedNode } from '../tsmorph_utils'; diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.test.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.test.ts index bf3f85114c660..63c02e4d8ea82 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.test.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.test.ts @@ -7,7 +7,7 @@ */ import { REPO_ROOT } from '@kbn/utils'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { getPluginApiDocId } from '../utils'; import { extractImportReferences } from './extract_import_refs'; import { ApiScope, PluginOrPackage, Reference } from '../types'; diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.ts index 8420a0cee4cd0..e72367f5fd783 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/extract_import_refs.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { getApiSectionId, getPluginApiDocId, getPluginForPath } from '../utils'; import { ApiScope, PluginOrPackage, TextWithLinks } from '../types'; import { getRelativePath, pathsOutsideScopes } from './utils'; diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_references.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_references.ts index 108e018f82c85..9bc48a55b3415 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_references.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_references.ts @@ -7,7 +7,7 @@ */ import { Node, ReferenceFindableNode } from 'ts-morph'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { getPluginForPath } from '../utils'; import { getSourceForNode } from './utils'; import { ApiDeclaration, ApiReference, PluginOrPackage } from '../types'; diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_signature.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_signature.ts index 81daa3bb5df6d..67960dfe6a898 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_signature.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/get_signature.ts @@ -8,7 +8,7 @@ /* eslint-disable no-bitwise */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Node, TypeFormatFlags } from 'ts-morph'; import { isNamedNode } from '../tsmorph_utils'; import { PluginOrPackage, Reference } from '../types'; diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/types.ts b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/types.ts index cf88a51d69ba4..9f44646b7de2d 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_declarations/types.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_declarations/types.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { ApiScope, PluginOrPackage } from '../types'; export interface BuildApiDecOpts { diff --git a/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts b/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts index fcb06da4ea975..0617e35a88615 100644 --- a/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts +++ b/packages/kbn-docs-utils/src/api_docs/build_api_docs_cli.ts @@ -9,7 +9,8 @@ import Fs from 'fs'; import Path from 'path'; -import { run, CiStatsReporter, createFlagError } from '@kbn/dev-utils'; +import { run, createFlagError } from '@kbn/dev-utils'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; import { REPO_ROOT } from '@kbn/utils'; import { Project } from 'ts-morph'; diff --git a/packages/kbn-docs-utils/src/api_docs/get_declaration_nodes_for_plugin.ts b/packages/kbn-docs-utils/src/api_docs/get_declaration_nodes_for_plugin.ts index 0d587559d3512..10eb466a4b4ae 100644 --- a/packages/kbn-docs-utils/src/api_docs/get_declaration_nodes_for_plugin.ts +++ b/packages/kbn-docs-utils/src/api_docs/get_declaration_nodes_for_plugin.ts @@ -7,7 +7,7 @@ */ import Path from 'path'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Project, SourceFile, Node } from 'ts-morph'; import { ApiScope, PluginOrPackage } from './types'; import { isNamedNode, getSourceFileMatching } from './tsmorph_utils'; diff --git a/packages/kbn-docs-utils/src/api_docs/get_plugin_api.ts b/packages/kbn-docs-utils/src/api_docs/get_plugin_api.ts index e0169f964dd99..b8850059aa366 100644 --- a/packages/kbn-docs-utils/src/api_docs/get_plugin_api.ts +++ b/packages/kbn-docs-utils/src/api_docs/get_plugin_api.ts @@ -8,7 +8,7 @@ import Path from 'path'; import { Node, Project } from 'ts-morph'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { ApiScope, Lifecycle, PluginOrPackage } from './types'; import { ApiDeclaration, PluginApi } from './types'; import { buildApiDeclarationTopNode } from './build_api_declarations/build_api_declaration'; diff --git a/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts b/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts index 5709ec2a2f639..08ffafe81a2df 100644 --- a/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts +++ b/packages/kbn-docs-utils/src/api_docs/get_plugin_api_map.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Project } from 'ts-morph'; import { getPluginApi } from './get_plugin_api'; import { diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/build_plugin_deprecations_table.ts b/packages/kbn-docs-utils/src/api_docs/mdx/build_plugin_deprecations_table.ts index 4e4d5e2bf0ceb..bd2d973bf58ff 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/build_plugin_deprecations_table.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/build_plugin_deprecations_table.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import Path from 'path'; import { ApiDeclaration, ApiReference, ReferencedDeprecationsByPlugin } from '../types'; import { getPluginApiDocId } from '../utils'; diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts b/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts index 022cce8cbfe2d..b1862f9bc2165 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/split_apis_by_folder.test.ts @@ -8,7 +8,7 @@ import Path from 'path'; import { Project } from 'ts-morph'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { PluginApi, PluginOrPackage } from '../types'; import { getKibanaPlatformPlugin } from '../tests/kibana_platform_plugin_mock'; diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/types.ts b/packages/kbn-docs-utils/src/api_docs/mdx/types.ts index 8ad7c22486d60..9299e41d06999 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/types.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/types.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { ApiStats, PluginApi, PluginOrPackage } from '../types'; export interface WritePluginDocsOpts { diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts index 031dc8cf35bce..156e09b2fce1b 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_api.ts @@ -7,7 +7,7 @@ */ import moment from 'moment'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import dedent from 'dedent'; import fs from 'fs'; import Path from 'path'; diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts index 6be1ca11d3d4f..e79c109311c0b 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_doc_by_plugin.ts @@ -7,7 +7,7 @@ */ import moment from 'moment'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import dedent from 'dedent'; import fs from 'fs'; import Path from 'path'; diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts index 8397f84eb9812..712dd9c8e637f 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_deprecations_due_by_team.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ import moment from 'moment'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import dedent from 'dedent'; import fs from 'fs'; import Path from 'path'; diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts index f7099e6c1a23b..c98621356439c 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_directory_doc.ts @@ -9,7 +9,7 @@ import moment from 'moment'; import fs from 'fs'; import Path from 'path'; import dedent from 'dedent'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { PluginApi, PluginMetaInfo } from '../types'; import { getPluginApiDocId } from '../utils'; diff --git a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_split_by_folder.test.ts b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_split_by_folder.test.ts index 9e96544b0143b..be947bc13b469 100644 --- a/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_split_by_folder.test.ts +++ b/packages/kbn-docs-utils/src/api_docs/mdx/write_plugin_split_by_folder.test.ts @@ -7,7 +7,7 @@ */ import { Project } from 'ts-morph'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { splitApisByFolder } from './write_plugin_split_by_folder'; import { getPluginApi } from '../get_plugin_api'; import { getKibanaPlatformPlugin } from '../tests/kibana_platform_plugin_mock'; diff --git a/packages/kbn-docs-utils/src/api_docs/tests/api_doc_suite.test.ts b/packages/kbn-docs-utils/src/api_docs/tests/api_doc_suite.test.ts index cf536ce5158c1..fa7ea46b093bf 100644 --- a/packages/kbn-docs-utils/src/api_docs/tests/api_doc_suite.test.ts +++ b/packages/kbn-docs-utils/src/api_docs/tests/api_doc_suite.test.ts @@ -10,7 +10,7 @@ import fs from 'fs'; import Path from 'path'; import { Project } from 'ts-morph'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { writePluginDocs } from '../mdx/write_plugin_mdx_docs'; import { diff --git a/packages/kbn-docs-utils/src/api_docs/utils.test.ts b/packages/kbn-docs-utils/src/api_docs/utils.test.ts index 0cfa0331fd202..7c98f0dd99b72 100644 --- a/packages/kbn-docs-utils/src/api_docs/utils.test.ts +++ b/packages/kbn-docs-utils/src/api_docs/utils.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import Path from 'path'; import { Project } from 'ts-morph'; import { findPlugins } from './find_plugins'; diff --git a/packages/kbn-docs-utils/src/api_docs/utils.ts b/packages/kbn-docs-utils/src/api_docs/utils.ts index c4c89cd070034..c479228533f49 100644 --- a/packages/kbn-docs-utils/src/api_docs/utils.ts +++ b/packages/kbn-docs-utils/src/api_docs/utils.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ import path from 'path'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { ApiDeclaration, ScopeApi, diff --git a/packages/kbn-es-archiver/src/actions/edit.ts b/packages/kbn-es-archiver/src/actions/edit.ts index 7a97bf08f3675..1d6742a20a3dc 100644 --- a/packages/kbn-es-archiver/src/actions/edit.ts +++ b/packages/kbn-es-archiver/src/actions/edit.ts @@ -11,7 +11,7 @@ import Fs from 'fs'; import { createGunzip, createGzip, constants } from 'zlib'; import { promisify } from 'util'; import globby from 'globby'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { createPromiseFromStreams } from '@kbn/utils'; const unlinkAsync = promisify(Fs.unlink); diff --git a/packages/kbn-es-archiver/src/actions/empty_kibana_index.ts b/packages/kbn-es-archiver/src/actions/empty_kibana_index.ts index 96b5b5f8e98e5..c9b67e4745d45 100644 --- a/packages/kbn-es-archiver/src/actions/empty_kibana_index.ts +++ b/packages/kbn-es-archiver/src/actions/empty_kibana_index.ts @@ -7,7 +7,7 @@ */ import type { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient } from '@kbn/test'; import { migrateKibanaIndex, createStats, cleanKibanaIndices } from '../lib'; diff --git a/packages/kbn-es-archiver/src/actions/load.ts b/packages/kbn-es-archiver/src/actions/load.ts index 0a318f895deb3..82462a9421520 100644 --- a/packages/kbn-es-archiver/src/actions/load.ts +++ b/packages/kbn-es-archiver/src/actions/load.ts @@ -9,7 +9,7 @@ import { resolve, relative } from 'path'; import { createReadStream } from 'fs'; import { Readable } from 'stream'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import { KbnClient } from '@kbn/test'; import type { Client } from '@elastic/elasticsearch'; diff --git a/packages/kbn-es-archiver/src/actions/rebuild_all.ts b/packages/kbn-es-archiver/src/actions/rebuild_all.ts index 27fcae0c7cec5..74062125fd795 100644 --- a/packages/kbn-es-archiver/src/actions/rebuild_all.ts +++ b/packages/kbn-es-archiver/src/actions/rebuild_all.ts @@ -10,7 +10,7 @@ import { resolve, relative } from 'path'; import { Stats, createReadStream, createWriteStream } from 'fs'; import { stat, rename } from 'fs/promises'; import { Readable, Writable } from 'stream'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { createPromiseFromStreams, REPO_ROOT } from '@kbn/utils'; import { prioritizeMappings, diff --git a/packages/kbn-es-archiver/src/actions/save.ts b/packages/kbn-es-archiver/src/actions/save.ts index e5e3f06b8436d..16f0cbc3c1846 100644 --- a/packages/kbn-es-archiver/src/actions/save.ts +++ b/packages/kbn-es-archiver/src/actions/save.ts @@ -10,7 +10,7 @@ import { resolve, relative } from 'path'; import { createWriteStream, mkdirSync } from 'fs'; import { Readable, Writable } from 'stream'; import type { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { createListStream, createPromiseFromStreams, REPO_ROOT } from '@kbn/utils'; import { diff --git a/packages/kbn-es-archiver/src/actions/unload.ts b/packages/kbn-es-archiver/src/actions/unload.ts index 22830b7289174..2d4b16d718689 100644 --- a/packages/kbn-es-archiver/src/actions/unload.ts +++ b/packages/kbn-es-archiver/src/actions/unload.ts @@ -10,7 +10,7 @@ import { resolve, relative } from 'path'; import { createReadStream } from 'fs'; import { Readable, Writable } from 'stream'; import type { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient } from '@kbn/test'; import { createPromiseFromStreams, REPO_ROOT } from '@kbn/utils'; diff --git a/packages/kbn-es-archiver/src/es_archiver.ts b/packages/kbn-es-archiver/src/es_archiver.ts index e13e20f25a703..0a9937ca3d9b4 100644 --- a/packages/kbn-es-archiver/src/es_archiver.ts +++ b/packages/kbn-es-archiver/src/es_archiver.ts @@ -10,7 +10,7 @@ import Fs from 'fs'; import Path from 'path'; import type { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import { KbnClient } from '@kbn/test'; diff --git a/packages/kbn-es-archiver/src/lib/docs/generate_doc_records_stream.test.ts b/packages/kbn-es-archiver/src/lib/docs/generate_doc_records_stream.test.ts index edcf5c32f1085..e102ac50c3876 100644 --- a/packages/kbn-es-archiver/src/lib/docs/generate_doc_records_stream.test.ts +++ b/packages/kbn-es-archiver/src/lib/docs/generate_doc_records_stream.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { createListStream, diff --git a/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.test.ts b/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.test.ts index 9c0ff4a8f91ec..5dc9b4b7bd8dd 100644 --- a/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.test.ts +++ b/packages/kbn-es-archiver/src/lib/docs/index_doc_records_stream.test.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { ToolingLog, createRecursiveSerializer } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { createRecursiveSerializer } from '@kbn/jest-serializers'; import { createListStream, createPromiseFromStreams } from '@kbn/utils'; diff --git a/packages/kbn-es-archiver/src/lib/indices/__mocks__/stubs.ts b/packages/kbn-es-archiver/src/lib/indices/__mocks__/stubs.ts index ded56ddfdf0de..c60c920100174 100644 --- a/packages/kbn-es-archiver/src/lib/indices/__mocks__/stubs.ts +++ b/packages/kbn-es-archiver/src/lib/indices/__mocks__/stubs.ts @@ -8,7 +8,7 @@ import type { Client } from '@elastic/elasticsearch'; import sinon from 'sinon'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Stats } from '../../stats'; type StubStats = Stats & { diff --git a/packages/kbn-es-archiver/src/lib/indices/create_index_stream.ts b/packages/kbn-es-archiver/src/lib/indices/create_index_stream.ts index 26472d72bef0f..2ab53a2ca012c 100644 --- a/packages/kbn-es-archiver/src/lib/indices/create_index_stream.ts +++ b/packages/kbn-es-archiver/src/lib/indices/create_index_stream.ts @@ -11,7 +11,7 @@ import { inspect } from 'util'; import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Stats } from '../stats'; import { deleteKibanaIndices } from './kibana_index'; diff --git a/packages/kbn-es-archiver/src/lib/indices/delete_index.ts b/packages/kbn-es-archiver/src/lib/indices/delete_index.ts index 3bba96d32ba95..20067a1f54bcf 100644 --- a/packages/kbn-es-archiver/src/lib/indices/delete_index.ts +++ b/packages/kbn-es-archiver/src/lib/indices/delete_index.ts @@ -7,7 +7,7 @@ */ import type { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Stats } from '../stats'; import { ES_CLIENT_HEADERS } from '../../client_headers'; diff --git a/packages/kbn-es-archiver/src/lib/indices/delete_index_stream.ts b/packages/kbn-es-archiver/src/lib/indices/delete_index_stream.ts index e7763ca251e6f..450d575181529 100644 --- a/packages/kbn-es-archiver/src/lib/indices/delete_index_stream.ts +++ b/packages/kbn-es-archiver/src/lib/indices/delete_index_stream.ts @@ -8,7 +8,7 @@ import { Transform } from 'stream'; import type { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Stats } from '../stats'; import { deleteIndex } from './delete_index'; diff --git a/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts b/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts index eaae1de46f1e6..6a02113bbf733 100644 --- a/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts +++ b/packages/kbn-es-archiver/src/lib/indices/kibana_index.ts @@ -9,7 +9,7 @@ import { inspect } from 'util'; import type { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient } from '@kbn/test'; import { Stats } from '../stats'; import { deleteIndex } from './delete_index'; diff --git a/packages/kbn-es-archiver/src/lib/progress.ts b/packages/kbn-es-archiver/src/lib/progress.ts index 5e54aba335b97..59be205eb1283 100644 --- a/packages/kbn-es-archiver/src/lib/progress.ts +++ b/packages/kbn-es-archiver/src/lib/progress.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; const SECOND = 1000; diff --git a/packages/kbn-es-archiver/src/lib/stats.test.ts b/packages/kbn-es-archiver/src/lib/stats.test.ts index 49dd75232d83a..5634bda070763 100644 --- a/packages/kbn-es-archiver/src/lib/stats.test.ts +++ b/packages/kbn-es-archiver/src/lib/stats.test.ts @@ -8,7 +8,7 @@ import { uniq } from 'lodash'; import sinon from 'sinon'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { createStats } from './stats'; diff --git a/packages/kbn-es-archiver/src/lib/stats.ts b/packages/kbn-es-archiver/src/lib/stats.ts index 64dd6a9273efe..9ff16d57b8661 100644 --- a/packages/kbn-es-archiver/src/lib/stats.ts +++ b/packages/kbn-es-archiver/src/lib/stats.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { cloneDeep } from 'lodash'; export interface IndexStats { diff --git a/packages/kbn-es/src/artifact.test.js b/packages/kbn-es/src/artifact.test.js index 8888c8ca2f989..b16cb3ab54548 100644 --- a/packages/kbn-es/src/artifact.test.js +++ b/packages/kbn-es/src/artifact.test.js @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; jest.mock('node-fetch'); import fetch from 'node-fetch'; const { Response } = jest.requireActual('node-fetch'); diff --git a/packages/kbn-es/src/artifact.ts b/packages/kbn-es/src/artifact.ts index 9ec3b96801dda..04cde128181b3 100644 --- a/packages/kbn-es/src/artifact.ts +++ b/packages/kbn-es/src/artifact.ts @@ -16,7 +16,7 @@ import { setTimeout } from 'timers/promises'; import fetch, { Headers } from 'node-fetch'; import AbortController from 'abort-controller'; import chalk from 'chalk'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { cache } from './utils/cache'; import { resolveCustomSnapshotUrl } from './custom_snapshots'; diff --git a/packages/kbn-es/src/cli_commands/snapshot.js b/packages/kbn-es/src/cli_commands/snapshot.js index 095ce3cb04299..c0256fafbae7d 100644 --- a/packages/kbn-es/src/cli_commands/snapshot.js +++ b/packages/kbn-es/src/cli_commands/snapshot.js @@ -8,7 +8,8 @@ const dedent = require('dedent'); const getopts = require('getopts'); -import { ToolingLog, getTimeReporter } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { getTimeReporter } from '@kbn/ci-stats-reporter'; const { Cluster } = require('../cluster'); const { parseTimeoutToMs } = require('../utils'); diff --git a/packages/kbn-es/src/install/install_archive.ts b/packages/kbn-es/src/install/install_archive.ts index ee04d9e4b62b5..9ccf00e09cf85 100644 --- a/packages/kbn-es/src/install/install_archive.ts +++ b/packages/kbn-es/src/install/install_archive.ts @@ -12,7 +12,8 @@ import path from 'path'; import chalk from 'chalk'; import execa from 'execa'; import del from 'del'; -import { extract, ToolingLog } from '@kbn/dev-utils'; +import { extract } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { BASE_PATH, ES_CONFIG, ES_KEYSTORE_BIN } from '../paths'; import { Artifact } from '../artifact'; diff --git a/packages/kbn-es/src/install/install_snapshot.ts b/packages/kbn-es/src/install/install_snapshot.ts index 84d713745eb82..1ab0facfd2601 100644 --- a/packages/kbn-es/src/install/install_snapshot.ts +++ b/packages/kbn-es/src/install/install_snapshot.ts @@ -9,7 +9,7 @@ import path from 'path'; import chalk from 'chalk'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { BASE_PATH } from '../paths'; import { installArchive } from './install_archive'; diff --git a/packages/kbn-es/src/install/install_source.ts b/packages/kbn-es/src/install/install_source.ts index d8c272677058e..a641e6eed513a 100644 --- a/packages/kbn-es/src/install/install_source.ts +++ b/packages/kbn-es/src/install/install_source.ts @@ -13,7 +13,7 @@ import crypto from 'crypto'; import chalk from 'chalk'; import simpleGit from 'simple-git/promise'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { installArchive } from './install_archive'; import { log as defaultLog } from '../utils/log'; diff --git a/packages/kbn-es/src/integration_tests/cluster.test.js b/packages/kbn-es/src/integration_tests/cluster.test.js index 271942158dc94..250bc9ac883b3 100644 --- a/packages/kbn-es/src/integration_tests/cluster.test.js +++ b/packages/kbn-es/src/integration_tests/cluster.test.js @@ -6,13 +6,9 @@ * Side Public License, v 1. */ -const { - ToolingLog, - ToolingLogCollectingWriter, - ES_NOPASSWORD_P12_PATH, - createAnyInstanceSerializer, - createStripAnsiSerializer, -} = require('@kbn/dev-utils'); +const { ES_NOPASSWORD_P12_PATH } = require('@kbn/dev-utils'); +const { ToolingLog, ToolingLogCollectingWriter } = require('@kbn/tooling-log'); +const { createAnyInstanceSerializer, createStripAnsiSerializer } = require('@kbn/jest-serializers'); const execa = require('execa'); const { Cluster } = require('../cluster'); const { installSource, installSnapshot, installArchive } = require('../install'); diff --git a/packages/kbn-es/src/utils/build_snapshot.ts b/packages/kbn-es/src/utils/build_snapshot.ts index 542e63dcc0748..2f5181a369f96 100644 --- a/packages/kbn-es/src/utils/build_snapshot.ts +++ b/packages/kbn-es/src/utils/build_snapshot.ts @@ -9,7 +9,8 @@ import path from 'path'; import os from 'os'; -import { ToolingLog, withProcRunner } from '@kbn/dev-utils'; +import { withProcRunner } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { createCliError } from '../errors'; import { findMostRecentlyChanged } from './find_most_recently_changed'; diff --git a/packages/kbn-es/src/utils/log.ts b/packages/kbn-es/src/utils/log.ts index a0299f885cf6a..e74ec837649c7 100644 --- a/packages/kbn-es/src/utils/log.ts +++ b/packages/kbn-es/src/utils/log.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; export const log = new ToolingLog({ level: 'verbose', diff --git a/packages/kbn-es/src/utils/native_realm.test.js b/packages/kbn-es/src/utils/native_realm.test.js index d3eaf6bd97b72..87a7092ca502e 100644 --- a/packages/kbn-es/src/utils/native_realm.test.js +++ b/packages/kbn-es/src/utils/native_realm.test.js @@ -7,7 +7,7 @@ */ const { NativeRealm } = require('./native_realm'); -const { ToolingLog } = require('@kbn/dev-utils'); +const { ToolingLog } = require('@kbn/tooling-log'); const mockClient = { xpack: { diff --git a/packages/kbn-generate/BUILD.bazel b/packages/kbn-generate/BUILD.bazel index ee73f358df9ca..eba297de0516e 100644 --- a/packages/kbn-generate/BUILD.bazel +++ b/packages/kbn-generate/BUILD.bazel @@ -29,6 +29,7 @@ RUNTIME_DEPS = [ "//packages/kbn-dev-utils", "//packages/kbn-bazel-packages", "//packages/kbn-utils", + "//packages/kbn-sort-package-json", "@npm//ejs", "@npm//micromatch", "@npm//normalize-path", @@ -38,6 +39,7 @@ TYPES_DEPS = [ "//packages/kbn-dev-utils:npm_module_types", "//packages/kbn-bazel-packages:npm_module_types", "//packages/kbn-utils:npm_module_types", + "//packages/kbn-sort-package-json:npm_module_types", "@npm//@types/micromatch", "@npm//ejs", "@npm//micromatch", diff --git a/packages/kbn-generate/src/commands/package_command.ts b/packages/kbn-generate/src/commands/package_command.ts index b18e63724469a..9b369c3201939 100644 --- a/packages/kbn-generate/src/commands/package_command.ts +++ b/packages/kbn-generate/src/commands/package_command.ts @@ -15,7 +15,8 @@ import globby from 'globby'; import micromatch from 'micromatch'; import { REPO_ROOT } from '@kbn/utils'; import { discoverBazelPackages, BAZEL_PACKAGE_DIRS } from '@kbn/bazel-packages'; -import { createFailError, createFlagError, isFailError, sortPackageJson } from '@kbn/dev-utils'; +import { createFailError, createFlagError, isFailError } from '@kbn/dev-utils'; +import { sortPackageJson } from '@kbn/sort-package-json'; import { TEMPLATE_DIR, ROOT_PKG_DIR, PKG_TEMPLATE_DIR } from '../paths'; import type { GenerateCommand } from '../generate_command'; diff --git a/packages/kbn-generate/src/lib/render.ts b/packages/kbn-generate/src/lib/render.ts index 23595dbbe43d0..33c6a903875f4 100644 --- a/packages/kbn-generate/src/lib/render.ts +++ b/packages/kbn-generate/src/lib/render.ts @@ -11,7 +11,8 @@ import Fsp from 'fs/promises'; import Ejs from 'ejs'; import normalizePath from 'normalize-path'; -import { ToolingLog, sortPackageJson } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { sortPackageJson } from '@kbn/sort-package-json'; import { REPO_ROOT } from '@kbn/utils'; export type Vars = Record; diff --git a/packages/kbn-generate/src/lib/validate_file.ts b/packages/kbn-generate/src/lib/validate_file.ts index d4f3640a45471..9a9ca28691537 100644 --- a/packages/kbn-generate/src/lib/validate_file.ts +++ b/packages/kbn-generate/src/lib/validate_file.ts @@ -9,7 +9,8 @@ import Fsp from 'fs/promises'; import Path from 'path'; -import { ToolingLog, createFailError, diffStrings } from '@kbn/dev-utils'; +import { createFailError, diffStrings } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; export async function validateFile(log: ToolingLog, usage: string, path: string, expected: string) { const relPath = Path.relative(process.cwd(), path); diff --git a/packages/kbn-import-resolver/src/integration_tests/import_resolver.test.ts b/packages/kbn-import-resolver/src/integration_tests/import_resolver.test.ts index b811151942bc5..1857e6ef26453 100644 --- a/packages/kbn-import-resolver/src/integration_tests/import_resolver.test.ts +++ b/packages/kbn-import-resolver/src/integration_tests/import_resolver.test.ts @@ -7,7 +7,7 @@ */ import Path from 'path'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { ImportResolver } from '../import_resolver'; diff --git a/packages/kbn-jest-serializers/BUILD.bazel b/packages/kbn-jest-serializers/BUILD.bazel new file mode 100644 index 0000000000000..23f0c76ab17dd --- /dev/null +++ b/packages/kbn-jest-serializers/BUILD.bazel @@ -0,0 +1,118 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-jest-serializers" +PKG_REQUIRE_NAME = "@kbn/jest-serializers" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//strip-ansi", + "//packages/kbn-utils", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//strip-ansi", + "@npm//@types/node", + "@npm//@types/jest", + "//packages/kbn-utils:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-jest-serializers/README.md b/packages/kbn-jest-serializers/README.md new file mode 100644 index 0000000000000..20d411e0db535 --- /dev/null +++ b/packages/kbn-jest-serializers/README.md @@ -0,0 +1,11 @@ +# @kbn/jest-serializers + +Shared serializers that may be useful when you're writing jest tests. To use them import the package and call one of the functions, passing the result to `expect.addSnapshotSerializer()`. + +Example: + +```ts +import { createAbsolutePathSerializer } from '@kbn/jest-serializers' + +expect.addSnapshotSerializer(createAbsolutePathSerializer()); +``` \ No newline at end of file diff --git a/packages/kbn-jest-serializers/jest.config.js b/packages/kbn-jest-serializers/jest.config.js new file mode 100644 index 0000000000000..23fad67c028bf --- /dev/null +++ b/packages/kbn-jest-serializers/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-jest-serializers'], +}; diff --git a/packages/kbn-jest-serializers/package.json b/packages/kbn-jest-serializers/package.json new file mode 100644 index 0000000000000..c049ef6725157 --- /dev/null +++ b/packages/kbn-jest-serializers/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/jest-serializers", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "kibana": { + "devOnly": true + } +} diff --git a/packages/kbn-dev-utils/src/serializers/absolute_path_serializer.ts b/packages/kbn-jest-serializers/src/absolute_path_serializer.ts similarity index 100% rename from packages/kbn-dev-utils/src/serializers/absolute_path_serializer.ts rename to packages/kbn-jest-serializers/src/absolute_path_serializer.ts diff --git a/packages/kbn-dev-utils/src/serializers/any_instance_serizlizer.ts b/packages/kbn-jest-serializers/src/any_instance_serizlizer.ts similarity index 100% rename from packages/kbn-dev-utils/src/serializers/any_instance_serizlizer.ts rename to packages/kbn-jest-serializers/src/any_instance_serizlizer.ts diff --git a/packages/kbn-jest-serializers/src/index.ts b/packages/kbn-jest-serializers/src/index.ts new file mode 100644 index 0000000000000..134f97da3ed82 --- /dev/null +++ b/packages/kbn-jest-serializers/src/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { createAbsolutePathSerializer } from './absolute_path_serializer'; +export { createStripAnsiSerializer } from './strip_ansi_serializer'; +export { createRecursiveSerializer } from './recursive_serializer'; +export { createAnyInstanceSerializer } from './any_instance_serizlizer'; +export { createReplaceSerializer } from './replace_serializer'; diff --git a/packages/kbn-dev-utils/src/serializers/recursive_serializer.ts b/packages/kbn-jest-serializers/src/recursive_serializer.ts similarity index 100% rename from packages/kbn-dev-utils/src/serializers/recursive_serializer.ts rename to packages/kbn-jest-serializers/src/recursive_serializer.ts diff --git a/packages/kbn-dev-utils/src/serializers/replace_serializer.ts b/packages/kbn-jest-serializers/src/replace_serializer.ts similarity index 100% rename from packages/kbn-dev-utils/src/serializers/replace_serializer.ts rename to packages/kbn-jest-serializers/src/replace_serializer.ts diff --git a/packages/kbn-dev-utils/src/serializers/strip_ansi_serializer.ts b/packages/kbn-jest-serializers/src/strip_ansi_serializer.ts similarity index 100% rename from packages/kbn-dev-utils/src/serializers/strip_ansi_serializer.ts rename to packages/kbn-jest-serializers/src/strip_ansi_serializer.ts diff --git a/packages/kbn-jest-serializers/tsconfig.json b/packages/kbn-jest-serializers/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-jest-serializers/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts index cafd8ab996577..e83fb083e9868 100644 --- a/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/basic_optimization.test.ts @@ -16,7 +16,8 @@ import cpy from 'cpy'; import del from 'del'; import { tap, filter } from 'rxjs/operators'; import { REPO_ROOT } from '@kbn/utils'; -import { ToolingLog, createReplaceSerializer } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { createReplaceSerializer } from '@kbn/jest-serializers'; import { runOptimizer, OptimizerConfig, OptimizerUpdate, logOptimizerState } from '..'; import { allValuesFrom } from '../common'; diff --git a/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts b/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts index 99f0c0bd9696e..bfec5800abebe 100644 --- a/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/bundle_cache.test.ts @@ -10,7 +10,7 @@ import Path from 'path'; import cpy from 'cpy'; import del from 'del'; -import { createAbsolutePathSerializer, createStripAnsiSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer, createStripAnsiSerializer } from '@kbn/jest-serializers'; import { OptimizerConfig } from '../optimizer/optimizer_config'; import { allValuesFrom, Bundle, Hashes, ParsedDllManifest } from '../common'; diff --git a/packages/kbn-optimizer/src/integration_tests/optimizer_built_paths.test.ts b/packages/kbn-optimizer/src/integration_tests/optimizer_built_paths.test.ts index c5ac22e2faa9b..164a855e76896 100644 --- a/packages/kbn-optimizer/src/integration_tests/optimizer_built_paths.test.ts +++ b/packages/kbn-optimizer/src/integration_tests/optimizer_built_paths.test.ts @@ -8,7 +8,7 @@ // @ts-expect-error import { getOptimizerBuiltPaths } from '@kbn/optimizer/target_node/optimizer/optimizer_built_paths'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; expect.addSnapshotSerializer(createAbsolutePathSerializer()); diff --git a/packages/kbn-optimizer/src/limits.ts b/packages/kbn-optimizer/src/limits.ts index b2f8b6fda6c6f..a63012f37a52e 100644 --- a/packages/kbn-optimizer/src/limits.ts +++ b/packages/kbn-optimizer/src/limits.ts @@ -11,7 +11,9 @@ import Path from 'path'; import dedent from 'dedent'; import Yaml from 'js-yaml'; -import { createFailError, ToolingLog, CiStatsMetric } from '@kbn/dev-utils'; +import { createFailError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { CiStatsMetric } from '@kbn/ci-stats-reporter'; import { OptimizerConfig, Limits } from './optimizer'; diff --git a/packages/kbn-optimizer/src/log_optimizer_progress.ts b/packages/kbn-optimizer/src/log_optimizer_progress.ts index d07c9dc6eff32..a4ad2d16d17c3 100644 --- a/packages/kbn-optimizer/src/log_optimizer_progress.ts +++ b/packages/kbn-optimizer/src/log_optimizer_progress.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import * as Rx from 'rxjs'; import { tap } from 'rxjs/operators'; diff --git a/packages/kbn-optimizer/src/log_optimizer_state.ts b/packages/kbn-optimizer/src/log_optimizer_state.ts index 060f05a445eb5..6271ab17e1e2d 100644 --- a/packages/kbn-optimizer/src/log_optimizer_state.ts +++ b/packages/kbn-optimizer/src/log_optimizer_state.ts @@ -8,7 +8,7 @@ import { inspect } from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { tap } from 'rxjs/operators'; import { OptimizerConfig } from './optimizer'; diff --git a/packages/kbn-optimizer/src/optimizer/get_plugin_bundles.test.ts b/packages/kbn-optimizer/src/optimizer/get_plugin_bundles.test.ts index e4cdddbf56dcb..fd8c6b9c37f27 100644 --- a/packages/kbn-optimizer/src/optimizer/get_plugin_bundles.test.ts +++ b/packages/kbn-optimizer/src/optimizer/get_plugin_bundles.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { getPluginBundles } from './get_plugin_bundles'; diff --git a/packages/kbn-optimizer/src/optimizer/kibana_platform_plugins.test.ts b/packages/kbn-optimizer/src/optimizer/kibana_platform_plugins.test.ts index ff3b7cd8c6174..2b95b5ccc5c04 100644 --- a/packages/kbn-optimizer/src/optimizer/kibana_platform_plugins.test.ts +++ b/packages/kbn-optimizer/src/optimizer/kibana_platform_plugins.test.ts @@ -8,7 +8,7 @@ import Path from 'path'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { findKibanaPlatformPlugins } from './kibana_platform_plugins'; diff --git a/packages/kbn-optimizer/src/optimizer/optimizer_cache_key.test.ts b/packages/kbn-optimizer/src/optimizer/optimizer_cache_key.test.ts index b8a2aaa592a5c..1cfc1b184d87a 100644 --- a/packages/kbn-optimizer/src/optimizer/optimizer_cache_key.test.ts +++ b/packages/kbn-optimizer/src/optimizer/optimizer_cache_key.test.ts @@ -7,7 +7,7 @@ */ import { REPO_ROOT } from '@kbn/utils'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { getOptimizerCacheKey } from './optimizer_cache_key'; import { OptimizerConfig } from './optimizer_config'; diff --git a/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts b/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts index df9e35a406e69..ccee62e7f1e50 100644 --- a/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts +++ b/packages/kbn-optimizer/src/optimizer/optimizer_config.test.ts @@ -24,7 +24,7 @@ jest.mock('os', () => { import Path from 'path'; import { REPO_ROOT } from '@kbn/utils'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { OptimizerConfig, ParsedOptions } from './optimizer_config'; import { parseThemeTags } from '../common'; diff --git a/packages/kbn-optimizer/src/report_optimizer_timings.ts b/packages/kbn-optimizer/src/report_optimizer_timings.ts index e57d0b9a641c6..2102821c80e2c 100644 --- a/packages/kbn-optimizer/src/report_optimizer_timings.ts +++ b/packages/kbn-optimizer/src/report_optimizer_timings.ts @@ -7,7 +7,8 @@ */ import { concatMap } from 'rxjs/operators'; -import { CiStatsReporter, ToolingLog } from '@kbn/dev-utils'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; +import { ToolingLog } from '@kbn/tooling-log'; import { OptimizerConfig } from './optimizer'; import { OptimizerUpdate$ } from './run_optimizer'; diff --git a/packages/kbn-optimizer/src/worker/bundle_metrics_plugin.ts b/packages/kbn-optimizer/src/worker/bundle_metrics_plugin.ts index d9e1bee22557b..ac1bcb02a0349 100644 --- a/packages/kbn-optimizer/src/worker/bundle_metrics_plugin.ts +++ b/packages/kbn-optimizer/src/worker/bundle_metrics_plugin.ts @@ -10,7 +10,7 @@ import Path from 'path'; import webpack from 'webpack'; import { RawSource } from 'webpack-sources'; -import { CiStatsMetric } from '@kbn/dev-utils'; +import { CiStatsMetric } from '@kbn/ci-stats-reporter'; import { Bundle } from '../common'; diff --git a/packages/kbn-plugin-generator/src/integration_tests/generate_plugin.test.ts b/packages/kbn-plugin-generator/src/integration_tests/generate_plugin.test.ts index 3b5a2bd272329..a9df7fdd2be90 100644 --- a/packages/kbn-plugin-generator/src/integration_tests/generate_plugin.test.ts +++ b/packages/kbn-plugin-generator/src/integration_tests/generate_plugin.test.ts @@ -11,7 +11,7 @@ import Path from 'path'; import del from 'del'; import execa from 'execa'; import { REPO_ROOT } from '@kbn/utils'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import globby from 'globby'; const GENERATED_DIR = Path.resolve(REPO_ROOT, `plugins`); diff --git a/packages/kbn-plugin-helpers/src/build_context.ts b/packages/kbn-plugin-helpers/src/build_context.ts index 40bf1dfa3cd04..75ba365c8f4e1 100644 --- a/packages/kbn-plugin-helpers/src/build_context.ts +++ b/packages/kbn-plugin-helpers/src/build_context.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Plugin } from './load_kibana_platform_plugin'; import { Config } from './config'; diff --git a/packages/kbn-plugin-helpers/src/config.ts b/packages/kbn-plugin-helpers/src/config.ts index 6c41ba7ac019c..c398bc9bd6d87 100644 --- a/packages/kbn-plugin-helpers/src/config.ts +++ b/packages/kbn-plugin-helpers/src/config.ts @@ -10,7 +10,7 @@ import Path from 'path'; import loadJsonFile from 'load-json-file'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Plugin } from './load_kibana_platform_plugin'; export interface Config { diff --git a/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts b/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts index 2d7664aa13326..9df98159c4e4d 100644 --- a/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts +++ b/packages/kbn-plugin-helpers/src/integration_tests/build.test.ts @@ -11,7 +11,7 @@ import Fs from 'fs'; import execa from 'execa'; import { REPO_ROOT } from '@kbn/utils'; -import { createStripAnsiSerializer, createReplaceSerializer } from '@kbn/dev-utils'; +import { createStripAnsiSerializer, createReplaceSerializer } from '@kbn/jest-serializers'; import extract from 'extract-zip'; import del from 'del'; import globby from 'globby'; diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 6c41471e8ed65..8e99101ed76ff 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -1346,22 +1346,7 @@ module.exports = _interopRequireDefault, module.exports.__esModule = true, modul /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter sync recursive": -/***/ (function(module, exports) { - -function webpackEmptyContext(req) { - var e = new Error("Cannot find module '" + req + "'"); - e.code = 'MODULE_NOT_FOUND'; - throw e; -} -webpackEmptyContext.keys = function() { return []; }; -webpackEmptyContext.resolve = webpackEmptyContext; -module.exports = webpackEmptyContext; -webpackEmptyContext.id = "../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter sync recursive"; - -/***/ }), - -/***/ "../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_config.js": +/***/ "../../node_modules/@kbn/ci-stats-core/target_node/ci_stats_config.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1428,7 +1413,42 @@ function parseConfig(log) { /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_reporter.js": +/***/ "../../node_modules/@kbn/ci-stats-core/target_node/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "parseConfig", { + enumerable: true, + get: function () { + return _ci_stats_config.parseConfig; + } +}); + +var _ci_stats_config = __webpack_require__("../../node_modules/@kbn/ci-stats-core/target_node/ci_stats_config.js"); + +/***/ }), + +/***/ "../../node_modules/@kbn/ci-stats-reporter/target_node sync recursive": +/***/ (function(module, exports) { + +function webpackEmptyContext(req) { + var e = new Error("Cannot find module '" + req + "'"); + e.code = 'MODULE_NOT_FOUND'; + throw e; +} +webpackEmptyContext.keys = function() { return []; }; +webpackEmptyContext.resolve = webpackEmptyContext; +module.exports = webpackEmptyContext; +webpackEmptyContext.id = "../../node_modules/@kbn/ci-stats-reporter/target_node sync recursive"; + +/***/ }), + +/***/ "../../node_modules/@kbn/ci-stats-reporter/target_node/ci_stats_reporter.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1457,7 +1477,7 @@ var _axios = _interopRequireDefault(__webpack_require__("../../node_modules/axio var _http = _interopRequireDefault(__webpack_require__("../../node_modules/axios/lib/adapters/http.js")); -var _ci_stats_config = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_config.js"); +var _ciStatsCore = __webpack_require__("../../node_modules/@kbn/ci-stats-core/target_node/index.js"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -1476,7 +1496,7 @@ class CiStatsReporter { * Create a CiStatsReporter by inspecting the ENV for the necessary config */ static fromEnv(log) { - return new CiStatsReporter((0, _ci_stats_config.parseConfig)(log), log); + return new CiStatsReporter((0, _ciStatsCore.parseConfig)(log), log); } constructor(config, log) { @@ -1655,7 +1675,7 @@ class CiStatsReporter { const { kibanaPackageJson - } = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter sync recursive")(hideFromWebpack.join('')); + } = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node sync recursive")(hideFromWebpack.join('')); return kibanaPackageJson.branch; } @@ -1672,7 +1692,7 @@ class CiStatsReporter { const { REPO_ROOT - } = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter sync recursive")(hideFromWebpack.join('')); + } = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node sync recursive")(hideFromWebpack.join('')); try { return _fs.default.readFileSync(_path.default.resolve(REPO_ROOT, 'data/uuid'), 'utf-8').trim(); @@ -1755,20 +1775,46 @@ exports.CiStatsReporter = CiStatsReporter; /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/sort_package_json.js": +/***/ "../../node_modules/@kbn/ci-stats-reporter/target_node/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "CiStatsReporter", { + enumerable: true, + get: function () { + return _ci_stats_reporter.CiStatsReporter; + } +}); +Object.defineProperty(exports, "getTimeReporter", { + enumerable: true, + get: function () { + return _report_time.getTimeReporter; + } +}); + +var _ci_stats_reporter = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/ci_stats_reporter.js"); + +var _report_time = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/report_time.js"); + +/***/ }), + +/***/ "../../node_modules/@kbn/ci-stats-reporter/target_node/report_time.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + Object.defineProperty(exports, "__esModule", { value: true }); -exports.sortPackageJson = sortPackageJson; +exports.getTimeReporter = void 0; -var _sortPackageJson = _interopRequireDefault(__webpack_require__("../../node_modules/sort-package-json/index.js")); +var _ci_stats_reporter = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/ci_stats_reporter.js"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -1777,16 +1823,26 @@ var _sortPackageJson = _interopRequireDefault(__webpack_require__("../../node_mo * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -function sortPackageJson(json) { - return JSON.stringify((0, _sortPackageJson.default)(JSON.parse(json), { - // top level keys in the order they were written when this was implemented - sortOrder: ['name', 'description', 'keywords', 'private', 'version', 'branch', 'main', 'browser', 'types', 'tsdocMetadata', 'build', 'homepage', 'bugs', 'license', 'kibana', 'author', 'scripts', 'repository', 'engines', 'resolutions'] - }), null, 2) + '\n'; -} +const getTimeReporter = (log, group) => { + const reporter = _ci_stats_reporter.CiStatsReporter.fromEnv(log); + + return async (startTime, id, meta) => { + await reporter.timings({ + timings: [{ + group, + id, + ms: Date.now() - startTime, + meta + }] + }); + }; +}; + +exports.getTimeReporter = getTimeReporter; /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/stdio/index.js": +/***/ "../../node_modules/@kbn/plugin-discovery/target_node/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1796,35 +1852,266 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _observe_lines = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/stdio/observe_lines.js"); +var _parse_kibana_platform_plugin = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js"); + +Object.keys(_parse_kibana_platform_plugin).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _parse_kibana_platform_plugin[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _parse_kibana_platform_plugin[key]; + } + }); +}); + +var _plugin_search_paths = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/plugin_search_paths.js"); -Object.keys(_observe_lines).forEach(function (key) { +Object.keys(_plugin_search_paths).forEach(function (key) { if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _observe_lines[key]) return; + if (key in exports && exports[key] === _plugin_search_paths[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { - return _observe_lines[key]; + return _plugin_search_paths[key]; } }); }); -var _observe_readable = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/stdio/observe_readable.js"); +var _simple_kibana_platform_plugin_discovery = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/simple_kibana_platform_plugin_discovery.js"); -Object.keys(_observe_readable).forEach(function (key) { +Object.keys(_simple_kibana_platform_plugin_discovery).forEach(function (key) { if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _observe_readable[key]) return; + if (key in exports && exports[key] === _simple_kibana_platform_plugin_discovery[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function () { - return _observe_readable[key]; + return _simple_kibana_platform_plugin_discovery[key]; } }); }); /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/stdio/observe_lines.js": +/***/ "../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.parseKibanaPlatformPlugin = parseKibanaPlatformPlugin; + +var _path = _interopRequireDefault(__webpack_require__("path")); + +var _loadJsonFile = _interopRequireDefault(__webpack_require__("../../node_modules/load-json-file/index.js")); + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +function isValidDepsDeclaration(input, type) { + if (typeof input === 'undefined') return []; + + if (Array.isArray(input) && input.every(i => typeof i === 'string')) { + return input; + } + + throw new TypeError(`The "${type}" in plugin manifest should be an array of strings.`); +} + +function parseKibanaPlatformPlugin(manifestPath) { + if (!_path.default.isAbsolute(manifestPath)) { + throw new TypeError('expected new platform manifest path to be absolute'); + } + + const manifest = _loadJsonFile.default.sync(manifestPath); + + if (!manifest || typeof manifest !== 'object' || Array.isArray(manifest)) { + throw new TypeError('expected new platform plugin manifest to be a JSON encoded object'); + } + + if (typeof manifest.id !== 'string') { + throw new TypeError('expected new platform plugin manifest to have a string id'); + } + + if (typeof manifest.version !== 'string') { + throw new TypeError('expected new platform plugin manifest to have a string version'); + } + + if (!manifest.owner || typeof manifest.owner.name !== 'string') { + throw new TypeError(`Expected plugin ${manifest.id} manifest to have an owner with name specified (${manifestPath})`); + } + + return { + directory: _path.default.dirname(manifestPath), + manifestPath, + manifest: { ...manifest, + ui: !!manifest.ui, + server: !!manifest.server, + id: manifest.id, + version: manifest.version, + kibanaVersion: manifest.kibanaVersion || manifest.version, + serviceFolders: manifest.serviceFolders || [], + owner: manifest.owner, + description: manifest.description, + enabledOnAnonymousPages: Boolean(manifest.enabledOnAnonymousPages), + requiredPlugins: isValidDepsDeclaration(manifest.requiredPlugins, 'requiredPlugins'), + optionalPlugins: isValidDepsDeclaration(manifest.optionalPlugins, 'optionalPlugins'), + requiredBundles: isValidDepsDeclaration(manifest.requiredBundles, 'requiredBundles'), + extraPublicDirs: isValidDepsDeclaration(manifest.extraPublicDirs, 'extraPublicDirs') + } + }; +} + +/***/ }), + +/***/ "../../node_modules/@kbn/plugin-discovery/target_node/plugin_search_paths.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getPluginSearchPaths = getPluginSearchPaths; + +var _path = __webpack_require__("path"); + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +function getPluginSearchPaths({ + rootDir, + oss, + examples, + testPlugins +}) { + return [(0, _path.resolve)(rootDir, 'src', 'plugins'), ...(oss ? [] : [(0, _path.resolve)(rootDir, 'x-pack', 'plugins')]), (0, _path.resolve)(rootDir, 'plugins'), ...(examples ? [(0, _path.resolve)(rootDir, 'examples')] : []), ...(examples && !oss ? [(0, _path.resolve)(rootDir, 'x-pack', 'examples')] : []), (0, _path.resolve)(rootDir, '..', 'kibana-extra'), ...(testPlugins ? [(0, _path.resolve)(rootDir, 'test/analytics/__fixtures__/plugins'), (0, _path.resolve)(rootDir, 'test/plugin_functional/plugins'), (0, _path.resolve)(rootDir, 'test/interpreter_functional/plugins'), (0, _path.resolve)(rootDir, 'test/common/fixtures/plugins')] : []), ...(testPlugins && !oss ? [(0, _path.resolve)(rootDir, 'x-pack/test/plugin_functional/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/functional_with_es_ssl/fixtures/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/alerting_api_integration/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/plugin_api_integration/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/plugin_api_perf/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/licensing_plugin/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/usage_collection/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/security_functional/fixtures/common')] : [])]; +} + +/***/ }), + +/***/ "../../node_modules/@kbn/plugin-discovery/target_node/simple_kibana_platform_plugin_discovery.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.simpleKibanaPlatformPluginDiscovery = simpleKibanaPlatformPluginDiscovery; + +var _path = _interopRequireDefault(__webpack_require__("path")); + +var _globby = _interopRequireDefault(__webpack_require__("../../node_modules/globby/index.js")); + +var _normalizePath = _interopRequireDefault(__webpack_require__("../../node_modules/normalize-path/index.js")); + +var _parse_kibana_platform_plugin = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js"); + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * Helper to find the new platform plugins. + */ +function simpleKibanaPlatformPluginDiscovery(scanDirs, pluginPaths) { + const patterns = Array.from(new Set([// find kibana.json files up to 5 levels within the scan dir + ...scanDirs.reduce((acc, dir) => [...acc, _path.default.resolve(dir, '*/kibana.json'), _path.default.resolve(dir, '*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/*/*/kibana.json')], []), ...pluginPaths.map(path => _path.default.resolve(path, `kibana.json`))])).map(path => (0, _normalizePath.default)(path)); + + const manifestPaths = _globby.default.sync(patterns, { + absolute: true + }).map(path => // absolute paths returned from globby are using normalize or + // something so the path separators are `/` even on windows, + // Path.resolve solves this + _path.default.resolve(path)); + + return manifestPaths.map(_parse_kibana_platform_plugin.parseKibanaPlatformPlugin); +} + +/***/ }), + +/***/ "../../node_modules/@kbn/sort-package-json/target_node/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.sortPackageJson = sortPackageJson; + +var _sortPackageJson = _interopRequireDefault(__webpack_require__("../../node_modules/sort-package-json/index.js")); + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +function sortPackageJson(json) { + return JSON.stringify((0, _sortPackageJson.default)(JSON.parse(json), { + // top level keys in the order they were written when this was implemented + sortOrder: ['name', 'description', 'keywords', 'private', 'version', 'branch', 'main', 'browser', 'types', 'tsdocMetadata', 'build', 'homepage', 'bugs', 'license', 'kibana', 'author', 'scripts', 'repository', 'engines', 'resolutions'] + }), null, 2) + '\n'; +} + +/***/ }), + +/***/ "../../node_modules/@kbn/stdio-dev-helpers/target_node/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "observeLines", { + enumerable: true, + get: function () { + return _observe_lines.observeLines; + } +}); +Object.defineProperty(exports, "observeReadable", { + enumerable: true, + get: function () { + return _observe_readable.observeReadable; + } +}); + +var _observe_lines = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_lines.js"); + +var _observe_readable = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_readable.js"); + +/***/ }), + +/***/ "../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_lines.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1839,7 +2126,7 @@ var Rx = _interopRequireWildcard(__webpack_require__("../../node_modules/rxjs/di var _operators = __webpack_require__("../../node_modules/rxjs/dist/esm5/operators/index.js"); -var _observe_readable = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/stdio/observe_readable.js"); +var _observe_readable = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_readable.js"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } @@ -1903,7 +2190,7 @@ function observeLines(readable) { /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/stdio/observe_readable.js": +/***/ "../../node_modules/@kbn/stdio-dev-helpers/target_node/observe_readable.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1941,7 +2228,7 @@ function observeReadable(readable) { /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/index.js": +/***/ "../../node_modules/@kbn/tooling-log/target_node/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -1950,6 +2237,18 @@ function observeReadable(readable) { Object.defineProperty(exports, "__esModule", { value: true }); +Object.defineProperty(exports, "DEFAULT_LOG_LEVEL", { + enumerable: true, + get: function () { + return _log_levels.DEFAULT_LOG_LEVEL; + } +}); +Object.defineProperty(exports, "LOG_LEVEL_FLAGS", { + enumerable: true, + get: function () { + return _log_levels.LOG_LEVEL_FLAGS; + } +}); Object.defineProperty(exports, "ToolingLog", { enumerable: true, get: function () { @@ -1968,6 +2267,12 @@ Object.defineProperty(exports, "ToolingLogTextWriter", { return _tooling_log_text_writer.ToolingLogTextWriter; } }); +Object.defineProperty(exports, "getLogLevelFlagsHelp", { + enumerable: true, + get: function () { + return _log_levels.getLogLevelFlagsHelp; + } +}); Object.defineProperty(exports, "parseLogLevel", { enumerable: true, get: function () { @@ -1981,17 +2286,17 @@ Object.defineProperty(exports, "pickLevelFromFlags", { } }); -var _tooling_log = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log.js"); +var _tooling_log = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log.js"); -var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_text_writer.js"); +var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log_text_writer.js"); -var _log_levels = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/log_levels.js"); +var _log_levels = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/log_levels.js"); -var _tooling_log_collecting_writer = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_collecting_writer.js"); +var _tooling_log_collecting_writer = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log_collecting_writer.js"); /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/log_levels.js": +/***/ "../../node_modules/@kbn/tooling-log/target_node/log_levels.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2071,7 +2376,7 @@ function parseLogLevel(name) { /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log.js": +/***/ "../../node_modules/@kbn/tooling-log/target_node/tooling_log.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2088,7 +2393,7 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__("../../node_mo var Rx = _interopRequireWildcard(__webpack_require__("../../node_modules/rxjs/dist/esm5/index.js")); -var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_text_writer.js"); +var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log_text_writer.js"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } @@ -2240,7 +2545,7 @@ exports.ToolingLog = ToolingLog; /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_collecting_writer.js": +/***/ "../../node_modules/@kbn/tooling-log/target_node/tooling_log_collecting_writer.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2255,7 +2560,7 @@ exports.ToolingLogCollectingWriter = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__("../../node_modules/@babel/runtime/helpers/defineProperty.js")); -var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_text_writer.js"); +var _tooling_log_text_writer = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/tooling_log_text_writer.js"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -2298,7 +2603,7 @@ exports.ToolingLogCollectingWriter = ToolingLogCollectingWriter; /***/ }), -/***/ "../../node_modules/@kbn/dev-utils/target_node/tooling_log/tooling_log_text_writer.js": +/***/ "../../node_modules/@kbn/tooling-log/target_node/tooling_log_text_writer.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2317,7 +2622,7 @@ var _util = __webpack_require__("util"); var _chalk = _interopRequireDefault(__webpack_require__("../../node_modules/chalk/source/index.js")); -var _log_levels = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/log_levels.js"); +var _log_levels = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/log_levels.js"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -2429,216 +2734,6 @@ exports.ToolingLogTextWriter = ToolingLogTextWriter; /***/ }), -/***/ "../../node_modules/@kbn/plugin-discovery/target_node/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _parse_kibana_platform_plugin = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js"); - -Object.keys(_parse_kibana_platform_plugin).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _parse_kibana_platform_plugin[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _parse_kibana_platform_plugin[key]; - } - }); -}); - -var _plugin_search_paths = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/plugin_search_paths.js"); - -Object.keys(_plugin_search_paths).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _plugin_search_paths[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _plugin_search_paths[key]; - } - }); -}); - -var _simple_kibana_platform_plugin_discovery = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/simple_kibana_platform_plugin_discovery.js"); - -Object.keys(_simple_kibana_platform_plugin_discovery).forEach(function (key) { - if (key === "default" || key === "__esModule") return; - if (key in exports && exports[key] === _simple_kibana_platform_plugin_discovery[key]) return; - Object.defineProperty(exports, key, { - enumerable: true, - get: function () { - return _simple_kibana_platform_plugin_discovery[key]; - } - }); -}); - -/***/ }), - -/***/ "../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.parseKibanaPlatformPlugin = parseKibanaPlatformPlugin; - -var _path = _interopRequireDefault(__webpack_require__("path")); - -var _loadJsonFile = _interopRequireDefault(__webpack_require__("../../node_modules/load-json-file/index.js")); - -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ -function isValidDepsDeclaration(input, type) { - if (typeof input === 'undefined') return []; - - if (Array.isArray(input) && input.every(i => typeof i === 'string')) { - return input; - } - - throw new TypeError(`The "${type}" in plugin manifest should be an array of strings.`); -} - -function parseKibanaPlatformPlugin(manifestPath) { - if (!_path.default.isAbsolute(manifestPath)) { - throw new TypeError('expected new platform manifest path to be absolute'); - } - - const manifest = _loadJsonFile.default.sync(manifestPath); - - if (!manifest || typeof manifest !== 'object' || Array.isArray(manifest)) { - throw new TypeError('expected new platform plugin manifest to be a JSON encoded object'); - } - - if (typeof manifest.id !== 'string') { - throw new TypeError('expected new platform plugin manifest to have a string id'); - } - - if (typeof manifest.version !== 'string') { - throw new TypeError('expected new platform plugin manifest to have a string version'); - } - - if (!manifest.owner || typeof manifest.owner.name !== 'string') { - throw new TypeError(`Expected plugin ${manifest.id} manifest to have an owner with name specified (${manifestPath})`); - } - - return { - directory: _path.default.dirname(manifestPath), - manifestPath, - manifest: { ...manifest, - ui: !!manifest.ui, - server: !!manifest.server, - id: manifest.id, - version: manifest.version, - kibanaVersion: manifest.kibanaVersion || manifest.version, - serviceFolders: manifest.serviceFolders || [], - owner: manifest.owner, - description: manifest.description, - enabledOnAnonymousPages: Boolean(manifest.enabledOnAnonymousPages), - requiredPlugins: isValidDepsDeclaration(manifest.requiredPlugins, 'requiredPlugins'), - optionalPlugins: isValidDepsDeclaration(manifest.optionalPlugins, 'optionalPlugins'), - requiredBundles: isValidDepsDeclaration(manifest.requiredBundles, 'requiredBundles'), - extraPublicDirs: isValidDepsDeclaration(manifest.extraPublicDirs, 'extraPublicDirs') - } - }; -} - -/***/ }), - -/***/ "../../node_modules/@kbn/plugin-discovery/target_node/plugin_search_paths.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getPluginSearchPaths = getPluginSearchPaths; - -var _path = __webpack_require__("path"); - -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ -function getPluginSearchPaths({ - rootDir, - oss, - examples, - testPlugins -}) { - return [(0, _path.resolve)(rootDir, 'src', 'plugins'), ...(oss ? [] : [(0, _path.resolve)(rootDir, 'x-pack', 'plugins')]), (0, _path.resolve)(rootDir, 'plugins'), ...(examples ? [(0, _path.resolve)(rootDir, 'examples')] : []), ...(examples && !oss ? [(0, _path.resolve)(rootDir, 'x-pack', 'examples')] : []), (0, _path.resolve)(rootDir, '..', 'kibana-extra'), ...(testPlugins ? [(0, _path.resolve)(rootDir, 'test/analytics/__fixtures__/plugins'), (0, _path.resolve)(rootDir, 'test/plugin_functional/plugins'), (0, _path.resolve)(rootDir, 'test/interpreter_functional/plugins'), (0, _path.resolve)(rootDir, 'test/common/fixtures/plugins')] : []), ...(testPlugins && !oss ? [(0, _path.resolve)(rootDir, 'x-pack/test/plugin_functional/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/functional_with_es_ssl/fixtures/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/alerting_api_integration/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/plugin_api_integration/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/plugin_api_perf/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/licensing_plugin/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/usage_collection/plugins'), (0, _path.resolve)(rootDir, 'x-pack/test/security_functional/fixtures/common')] : [])]; -} - -/***/ }), - -/***/ "../../node_modules/@kbn/plugin-discovery/target_node/simple_kibana_platform_plugin_discovery.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.simpleKibanaPlatformPluginDiscovery = simpleKibanaPlatformPluginDiscovery; - -var _path = _interopRequireDefault(__webpack_require__("path")); - -var _globby = _interopRequireDefault(__webpack_require__("../../node_modules/globby/index.js")); - -var _normalizePath = _interopRequireDefault(__webpack_require__("../../node_modules/normalize-path/index.js")); - -var _parse_kibana_platform_plugin = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/parse_kibana_platform_plugin.js"); - -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -/** - * Helper to find the new platform plugins. - */ -function simpleKibanaPlatformPluginDiscovery(scanDirs, pluginPaths) { - const patterns = Array.from(new Set([// find kibana.json files up to 5 levels within the scan dir - ...scanDirs.reduce((acc, dir) => [...acc, _path.default.resolve(dir, '*/kibana.json'), _path.default.resolve(dir, '*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/*/kibana.json'), _path.default.resolve(dir, '*/*/*/*/*/kibana.json')], []), ...pluginPaths.map(path => _path.default.resolve(path, `kibana.json`))])).map(path => (0, _normalizePath.default)(path)); - - const manifestPaths = _globby.default.sync(patterns, { - absolute: true - }).map(path => // absolute paths returned from globby are using normalize or - // something so the path separators are `/` even on windows, - // Path.resolve solves this - _path.default.resolve(path)); - - return manifestPaths.map(_parse_kibana_platform_plugin.parseKibanaPlatformPlugin); -} - -/***/ }), - /***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/async/for-each.js": /***/ (function(module, exports, __webpack_require__) { @@ -86028,8 +86123,8 @@ module.exports.sync = (filePath, data, options) => { /* harmony import */ var getopts__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(getopts__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("path"); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/index.js"); -/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__); +/* harmony import */ var _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/index.js"); +/* harmony import */ var _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_kbn_tooling_log__WEBPACK_IMPORTED_MODULE_3__); /* harmony import */ var _commands__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/commands/index.ts"); /* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/run.ts"); /* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/log.ts"); @@ -86080,7 +86175,7 @@ function help() { } async function run(argv) { - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].setLogLevel(Object(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_3__["pickLevelFromFlags"])(getopts__WEBPACK_IMPORTED_MODULE_1___default()(argv, { + _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].setLogLevel(Object(_kbn_tooling_log__WEBPACK_IMPORTED_MODULE_3__["pickLevelFromFlags"])(getopts__WEBPACK_IMPORTED_MODULE_1___default()(argv, { boolean: ['verbose', 'debug', 'quiet', 'silent', 'skip-missing'] }))); // We can simplify this setup (and remove this extra handling) once Yarn // starts forwarding the `--` directly to this script, see @@ -86141,8 +86236,8 @@ async function run(argv) { /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BootstrapCommand; }); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("path"); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_reporter.js"); -/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/index.js"); +/* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/log.ts"); /* harmony import */ var _utils_child_process__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/utils/child_process.ts"); /* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/link_project_executables.ts"); @@ -86193,7 +86288,7 @@ const BootstrapCommand = { const batchedNonBazelProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_5__[/* topologicallyBatchProjects */ "f"])(nonBazelProjectsOnly, projectGraph); const kibanaProjectPath = ((_projects$get = projects.get('kibana')) === null || _projects$get === void 0 ? void 0 : _projects$get.path) || ''; const runOffline = (options === null || options === void 0 ? void 0 : options.offline) === true; - const reporter = _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_2__[/* log */ "a"]); + const reporter = _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_2__[/* log */ "a"]); const timings = []; const time = async (id, body) => { @@ -87090,8 +87185,8 @@ async function copyToBuild(project, kibanaRoot, buildRoot) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return runCommand; }); -/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/ci_stats_reporter/ci_stats_reporter.js"); -/* harmony import */ var _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/index.js"); +/* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _kbn_plugin_discovery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/@kbn/plugin-discovery/target_node/index.js"); /* harmony import */ var _kbn_plugin_discovery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_plugin_discovery__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var _utils_errors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/errors.ts"); @@ -87157,7 +87252,7 @@ async function runCommand(command, config) { return; } - const reporter = _kbn_dev_utils_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"]); + const reporter = _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_0__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"]); try { await reporter.timings({ @@ -87444,8 +87539,8 @@ async function installBazelTools(repoRootPath) { /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); /* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/merge.js"); /* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/tap.js"); -/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/stdio/index.js"); -/* harmony import */ var _kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/index.js"); +/* harmony import */ var _kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__); /* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/child_process.ts"); /* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/log.ts"); /* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./src/utils/errors.ts"); @@ -87484,7 +87579,7 @@ async function runBazelCommandWithRunner(bazelCommandRunner, bazelArgs, offline const bazelLogs$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"](); // Bazel outputs machine readable output into stdout and human readable output goes to stderr. // Therefore we need to get both. In order to get errors we need to parse the actual text line - const bazelLogSubscription = rxjs__WEBPACK_IMPORTED_MODULE_2__[/* merge */ "a"](Object(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stdout).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`))), Object(_kbn_dev_utils_stdio__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stderr).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`)))).subscribe(bazelLogs$); // Wait for process and logs to finish, unsubscribing in the end + const bazelLogSubscription = rxjs__WEBPACK_IMPORTED_MODULE_2__[/* merge */ "a"](Object(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stdout).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`))), Object(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stderr).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`)))).subscribe(bazelLogs$); // Wait for process and logs to finish, unsubscribing in the end try { await bazelProc; @@ -88216,8 +88311,8 @@ async function linkProjectExecutables(projectsByName, projectGraph) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return log; }); /* unused harmony export Log */ -/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/tooling_log/index.js"); -/* harmony import */ var _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/tooling-log/target_node/index.js"); +/* harmony import */ var _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /* @@ -88229,7 +88324,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope */ -class Log extends _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLog"] { +class Log extends _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLog"] { constructor() { super(); @@ -88239,8 +88334,8 @@ class Log extends _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["Tooli } setLogLevel(level) { - this.logLevel = Object(_kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["parseLogLevel"])(level); - this.setWriters([new _kbn_dev_utils_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLogTextWriter"]({ + this.logLevel = Object(_kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__["parseLogLevel"])(level); + this.setWriters([new _kbn_tooling_log__WEBPACK_IMPORTED_MODULE_0__["ToolingLogTextWriter"]({ level: this.logLevel.name, writeTo: process.stdout })]); @@ -88983,8 +89078,8 @@ async function regenerateBaseTsconfig(plugins, repoRoot) { /* harmony import */ var fs_promises__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs_promises__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("path"); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/@kbn/dev-utils/target_node/sort_package_json.js"); -/* harmony import */ var _kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _kbn_sort_package_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/@kbn/sort-package-json/target_node/index.js"); +/* harmony import */ var _kbn_sort_package_json__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_kbn_sort_package_json__WEBPACK_IMPORTED_MODULE_2__); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -88998,7 +89093,7 @@ async function regenerateBaseTsconfig(plugins, repoRoot) { async function regeneratePackageJson(rootPath) { const path = path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(rootPath, 'package.json'); const json = await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.readFile(path, 'utf8'); - await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.writeFile(path, Object(_kbn_dev_utils_sort_package_json__WEBPACK_IMPORTED_MODULE_2__["sortPackageJson"])(json)); + await fs_promises__WEBPACK_IMPORTED_MODULE_0___default.a.writeFile(path, Object(_kbn_sort_package_json__WEBPACK_IMPORTED_MODULE_2__["sortPackageJson"])(json)); } /***/ }), diff --git a/packages/kbn-pm/src/cli.ts b/packages/kbn-pm/src/cli.ts index f6ea4d7124ab2..8b313be500841 100644 --- a/packages/kbn-pm/src/cli.ts +++ b/packages/kbn-pm/src/cli.ts @@ -9,7 +9,7 @@ import dedent from 'dedent'; import getopts from 'getopts'; import { resolve } from 'path'; -import { pickLevelFromFlags } from '@kbn/dev-utils/tooling_log'; +import { pickLevelFromFlags } from '@kbn/tooling-log'; import { commands } from './commands'; import { runCommand } from './run'; diff --git a/packages/kbn-pm/src/commands/bootstrap.ts b/packages/kbn-pm/src/commands/bootstrap.ts index 5b6f4fe3baeb7..3ea1a5f19b13b 100644 --- a/packages/kbn-pm/src/commands/bootstrap.ts +++ b/packages/kbn-pm/src/commands/bootstrap.ts @@ -7,7 +7,7 @@ */ import { resolve, sep } from 'path'; -import { CiStatsReporter } from '@kbn/dev-utils/ci_stats_reporter'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; import { log } from '../utils/log'; import { spawnStreaming } from '../utils/child_process'; diff --git a/packages/kbn-pm/src/run.ts b/packages/kbn-pm/src/run.ts index 559fcbcf8b668..0529ebd6425ca 100644 --- a/packages/kbn-pm/src/run.ts +++ b/packages/kbn-pm/src/run.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CiStatsReporter, CiStatsTiming } from '@kbn/dev-utils/ci_stats_reporter'; +import { CiStatsReporter, CiStatsTiming } from '@kbn/ci-stats-reporter'; import { simpleKibanaPlatformPluginDiscovery, getPluginSearchPaths } from '@kbn/plugin-discovery'; import { ICommand, ICommandConfig } from './commands'; diff --git a/packages/kbn-pm/src/utils/bazel/run.ts b/packages/kbn-pm/src/utils/bazel/run.ts index 18a6cacdf6d2a..4d7b82cc4eac0 100644 --- a/packages/kbn-pm/src/utils/bazel/run.ts +++ b/packages/kbn-pm/src/utils/bazel/run.ts @@ -10,7 +10,7 @@ import chalk from 'chalk'; import execa from 'execa'; import * as Rx from 'rxjs'; import { tap } from 'rxjs/operators'; -import { observeLines } from '@kbn/dev-utils/stdio'; +import { observeLines } from '@kbn/stdio-dev-helpers'; import { spawn } from '../child_process'; import { log } from '../log'; import { CliError } from '../errors'; diff --git a/packages/kbn-pm/src/utils/link_project_executables.test.ts b/packages/kbn-pm/src/utils/link_project_executables.test.ts index 7470ea6295490..5045474321ce5 100644 --- a/packages/kbn-pm/src/utils/link_project_executables.test.ts +++ b/packages/kbn-pm/src/utils/link_project_executables.test.ts @@ -12,7 +12,7 @@ jest.mock('./fs'); import { resolve } from 'path'; -import { ToolingLogCollectingWriter } from '@kbn/dev-utils/tooling_log'; +import { ToolingLogCollectingWriter } from '@kbn/tooling-log'; import { absolutePathSnapshotSerializer, stripAnsiSnapshotSerializer } from '../test_helpers'; import { linkProjectExecutables } from './link_project_executables'; diff --git a/packages/kbn-pm/src/utils/log.ts b/packages/kbn-pm/src/utils/log.ts index ba4ee6941f540..a70f967adc400 100644 --- a/packages/kbn-pm/src/utils/log.ts +++ b/packages/kbn-pm/src/utils/log.ts @@ -12,7 +12,7 @@ import { LogLevel, parseLogLevel, ParsedLogLevel, -} from '@kbn/dev-utils/tooling_log'; +} from '@kbn/tooling-log'; class Log extends ToolingLog { private logLevel!: ParsedLogLevel; diff --git a/packages/kbn-pm/src/utils/regenerate_package_json.ts b/packages/kbn-pm/src/utils/regenerate_package_json.ts index 88460132df2a6..6124aebc38879 100644 --- a/packages/kbn-pm/src/utils/regenerate_package_json.ts +++ b/packages/kbn-pm/src/utils/regenerate_package_json.ts @@ -9,7 +9,7 @@ import Fsp from 'fs/promises'; import Path from 'path'; -import { sortPackageJson } from '@kbn/dev-utils/sort_package_json'; +import { sortPackageJson } from '@kbn/sort-package-json'; export async function regeneratePackageJson(rootPath: string) { const path = Path.resolve(rootPath, 'package.json'); diff --git a/packages/kbn-sort-package-json/BUILD.bazel b/packages/kbn-sort-package-json/BUILD.bazel new file mode 100644 index 0000000000000..515e9009615c8 --- /dev/null +++ b/packages/kbn-sort-package-json/BUILD.bazel @@ -0,0 +1,116 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-sort-package-json" +PKG_REQUIRE_NAME = "@kbn/sort-package-json" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//sort-package-json", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//sort-package-json", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-sort-package-json/README.md b/packages/kbn-sort-package-json/README.md new file mode 100644 index 0000000000000..915f210547b73 --- /dev/null +++ b/packages/kbn-sort-package-json/README.md @@ -0,0 +1,3 @@ +# @kbn/sort-package-json + +Empty package generated by @kbn/generate diff --git a/packages/kbn-sort-package-json/jest.config.js b/packages/kbn-sort-package-json/jest.config.js new file mode 100644 index 0000000000000..ae0651be19e61 --- /dev/null +++ b/packages/kbn-sort-package-json/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-sort-package-json'], +}; diff --git a/packages/kbn-sort-package-json/package.json b/packages/kbn-sort-package-json/package.json new file mode 100644 index 0000000000000..9a875835d7450 --- /dev/null +++ b/packages/kbn-sort-package-json/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/sort-package-json", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "kibana": { + "devOnly": true + } +} diff --git a/packages/kbn-dev-utils/src/sort_package_json.ts b/packages/kbn-sort-package-json/src/index.ts similarity index 100% rename from packages/kbn-dev-utils/src/sort_package_json.ts rename to packages/kbn-sort-package-json/src/index.ts diff --git a/packages/kbn-sort-package-json/tsconfig.json b/packages/kbn-sort-package-json/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-sort-package-json/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-stdio-dev-helpers/BUILD.bazel b/packages/kbn-stdio-dev-helpers/BUILD.bazel new file mode 100644 index 0000000000000..05b76bbc0508d --- /dev/null +++ b/packages/kbn-stdio-dev-helpers/BUILD.bazel @@ -0,0 +1,118 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-stdio-dev-helpers" +PKG_REQUIRE_NAME = "@kbn/stdio-dev-helpers" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//rxjs", + "@npm//tslib", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//rxjs", + "@npm//tslib", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-stdio-dev-helpers/README.md b/packages/kbn-stdio-dev-helpers/README.md new file mode 100644 index 0000000000000..6ad7f282149ca --- /dev/null +++ b/packages/kbn-stdio-dev-helpers/README.md @@ -0,0 +1,3 @@ +# @kbn/stdio-dev-helpers + +RxJS helpers for dealing with stdio from child processes diff --git a/packages/kbn-stdio-dev-helpers/jest.config.js b/packages/kbn-stdio-dev-helpers/jest.config.js new file mode 100644 index 0000000000000..31a8aab16c7e5 --- /dev/null +++ b/packages/kbn-stdio-dev-helpers/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-stdio-dev-helpers'], +}; diff --git a/packages/kbn-stdio-dev-helpers/package.json b/packages/kbn-stdio-dev-helpers/package.json new file mode 100644 index 0000000000000..23b0a1cf65a76 --- /dev/null +++ b/packages/kbn-stdio-dev-helpers/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/stdio-dev-helpers", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "kibana": { + "devOnly": true + } +} diff --git a/packages/kbn-dev-utils/src/serializers/index.ts b/packages/kbn-stdio-dev-helpers/src/index.ts similarity index 63% rename from packages/kbn-dev-utils/src/serializers/index.ts rename to packages/kbn-stdio-dev-helpers/src/index.ts index 44db5fb56a9f7..a898037b1673e 100644 --- a/packages/kbn-dev-utils/src/serializers/index.ts +++ b/packages/kbn-stdio-dev-helpers/src/index.ts @@ -6,8 +6,5 @@ * Side Public License, v 1. */ -export * from './absolute_path_serializer'; -export * from './strip_ansi_serializer'; -export * from './recursive_serializer'; -export * from './any_instance_serizlizer'; -export * from './replace_serializer'; +export { observeLines } from './observe_lines'; +export { observeReadable } from './observe_readable'; diff --git a/packages/kbn-dev-utils/src/stdio/observe_lines.ts b/packages/kbn-stdio-dev-helpers/src/observe_lines.ts similarity index 100% rename from packages/kbn-dev-utils/src/stdio/observe_lines.ts rename to packages/kbn-stdio-dev-helpers/src/observe_lines.ts diff --git a/packages/kbn-dev-utils/src/stdio/observe_readable.ts b/packages/kbn-stdio-dev-helpers/src/observe_readable.ts similarity index 100% rename from packages/kbn-dev-utils/src/stdio/observe_readable.ts rename to packages/kbn-stdio-dev-helpers/src/observe_readable.ts diff --git a/packages/kbn-stdio-dev-helpers/tsconfig.json b/packages/kbn-stdio-dev-helpers/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-stdio-dev-helpers/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-test/src/es/test_es_cluster.ts b/packages/kbn-test/src/es/test_es_cluster.ts index b75b7f47e0743..a12b1d852ced9 100644 --- a/packages/kbn-test/src/es/test_es_cluster.ts +++ b/packages/kbn-test/src/es/test_es_cluster.ts @@ -12,7 +12,7 @@ import del from 'del'; // @ts-expect-error in js import { Cluster } from '@kbn/es'; import { Client, HttpConnection } from '@elastic/elasticsearch'; -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import { CI_PARALLEL_PROCESS_PREFIX } from '../ci_parallel_process_prefix'; import { esTestConfig } from './es_test_config'; diff --git a/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.test.ts b/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.test.ts index b2416fe8eec4c..220a336915bf1 100644 --- a/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.test.ts +++ b/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.test.ts @@ -8,7 +8,7 @@ import Path from 'path'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; // @ts-ignore import { createPatch } from 'diff'; diff --git a/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.ts b/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.ts index 06604f4b2c7ab..984fd698bfa12 100644 --- a/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.ts +++ b/packages/kbn-test/src/failed_tests_reporter/add_messages_to_report.ts @@ -9,7 +9,7 @@ import Fs from 'fs'; import { promisify } from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import xml2js from 'xml2js'; import { TestReport, makeFailedTestCaseIter } from './test_report'; diff --git a/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.test.ts b/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.test.ts index 7c28f105fba75..25062c4e5d5cb 100644 --- a/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.test.ts +++ b/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.test.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { ToolingLog, ToolingLogCollectingWriter, createStripAnsiSerializer } from '@kbn/dev-utils'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; +import { createStripAnsiSerializer } from '@kbn/jest-serializers'; import type { TestFailure } from './get_failures'; import { ExistingFailedTestIssues, FailedTestIssue } from './existing_failed_test_issues'; diff --git a/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.ts b/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.ts index 9a38cb0c659d3..b08835b655175 100644 --- a/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.ts +++ b/packages/kbn-test/src/failed_tests_reporter/existing_failed_test_issues.ts @@ -9,7 +9,8 @@ import { setTimeout } from 'timers/promises'; import Axios from 'axios'; -import { ToolingLog, isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils'; +import { isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { GithubIssueMini } from './github_api'; import { TestFailure } from './get_failures'; diff --git a/packages/kbn-test/src/failed_tests_reporter/github_api.ts b/packages/kbn-test/src/failed_tests_reporter/github_api.ts index bf870045c5a6e..5ad0f8417d651 100644 --- a/packages/kbn-test/src/failed_tests_reporter/github_api.ts +++ b/packages/kbn-test/src/failed_tests_reporter/github_api.ts @@ -9,7 +9,8 @@ import Url from 'url'; import Axios, { AxiosRequestConfig, AxiosInstance } from 'axios'; -import { ToolingLog, isAxiosResponseError, isAxiosRequestError } from '@kbn/dev-utils'; +import { isAxiosResponseError, isAxiosRequestError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; const BASE_URL = 'https://api.github.com/repos/elastic/kibana/'; diff --git a/packages/kbn-test/src/failed_tests_reporter/report_failures_to_es.ts b/packages/kbn-test/src/failed_tests_reporter/report_failures_to_es.ts index a96ca5822775d..061a5feafa994 100644 --- a/packages/kbn-test/src/failed_tests_reporter/report_failures_to_es.ts +++ b/packages/kbn-test/src/failed_tests_reporter/report_failures_to_es.ts @@ -7,7 +7,8 @@ */ import { Client, HttpConnection } from '@elastic/elasticsearch'; -import { createFailError, ToolingLog } from '@kbn/dev-utils'; +import { createFailError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { TestFailure } from './get_failures'; diff --git a/packages/kbn-test/src/failed_tests_reporter/report_failures_to_file.ts b/packages/kbn-test/src/failed_tests_reporter/report_failures_to_file.ts index 33dab240ec8b4..6985ad32c0808 100644 --- a/packages/kbn-test/src/failed_tests_reporter/report_failures_to_file.ts +++ b/packages/kbn-test/src/failed_tests_reporter/report_failures_to_file.ts @@ -10,7 +10,7 @@ import { createHash } from 'crypto'; import { mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'fs'; import { join, basename, resolve } from 'path'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import { escape } from 'he'; diff --git a/packages/kbn-test/src/failed_tests_reporter/run_failed_tests_reporter_cli.ts b/packages/kbn-test/src/failed_tests_reporter/run_failed_tests_reporter_cli.ts index 2f5519a163abc..4c539b3ab12b1 100644 --- a/packages/kbn-test/src/failed_tests_reporter/run_failed_tests_reporter_cli.ts +++ b/packages/kbn-test/src/failed_tests_reporter/run_failed_tests_reporter_cli.ts @@ -9,7 +9,8 @@ import Path from 'path'; import { REPO_ROOT } from '@kbn/utils'; -import { run, createFailError, createFlagError, CiStatsReporter } from '@kbn/dev-utils'; +import { run, createFailError, createFlagError } from '@kbn/dev-utils'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; import globby from 'globby'; import normalize from 'normalize-path'; diff --git a/packages/kbn-test/src/functional_test_runner/cli.ts b/packages/kbn-test/src/functional_test_runner/cli.ts index ac254c6ec92fd..ee01b0ccfde9c 100644 --- a/packages/kbn-test/src/functional_test_runner/cli.ts +++ b/packages/kbn-test/src/functional_test_runner/cli.ts @@ -9,7 +9,9 @@ import { resolve } from 'path'; import { inspect } from 'util'; -import { run, createFlagError, Flags, ToolingLog, getTimeReporter } from '@kbn/dev-utils'; +import { run, createFlagError, Flags } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { getTimeReporter } from '@kbn/ci-stats-reporter'; import exitHook from 'exit-hook'; import { FunctionalTestRunner } from './functional_test_runner'; diff --git a/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts b/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts index c8caad3049f14..1ba99fc69a5d3 100644 --- a/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts +++ b/packages/kbn-test/src/functional_test_runner/functional_test_runner.ts @@ -8,7 +8,7 @@ import { writeFileSync, mkdirSync } from 'fs'; import Path, { dirname } from 'path'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import { Suite, Test } from './fake_mocha_types'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js index 27434ce5a09ca..d1ce17cc95b7b 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js +++ b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.test.js @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { readConfigFile } from './read_config_file'; import { Config } from './config'; import { EsVersion } from '../es_version'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts index fd836f338edf0..d026842f3a4f1 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/config/read_config_file.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { defaultsDeep } from 'lodash'; import { Config } from './config'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_logs.ts b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_logs.ts index 188465fb7eb65..52fe9cb90d5fc 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_logs.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_logs.ts @@ -9,7 +9,8 @@ import execa from 'execa'; import * as Rx from 'rxjs'; import { tap } from 'rxjs/operators'; -import { ToolingLog, observeLines } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { observeLines } from '@kbn/stdio-dev-helpers'; /** * Observe the logs for a container, reflecting the log lines diff --git a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_running.ts b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_running.ts index 632f94d0550e6..b15b2bf3df075 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_running.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/container_running.ts @@ -8,7 +8,7 @@ import execa from 'execa'; import * as Rx from 'rxjs'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; /** * Create an observable that errors if a docker diff --git a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts index fd10551bb17ef..b6af2b5c8df9f 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/docker_servers/docker_servers_service.ts @@ -10,7 +10,7 @@ import Url from 'url'; import execa from 'execa'; import * as Rx from 'rxjs'; import { filter, take, map } from 'rxjs/operators'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Lifecycle } from '../lifecycle'; import { observeContainerRunning } from './container_running'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts b/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts index 90bb3a894bc6c..98db434b3b088 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/filter_suites.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Suite, Test } from '../../fake_mocha_types'; import { EsVersion } from '../es_version'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts index 61eb7eccce430..838b8ee9b9aa5 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/ci_stats_ftr_reporter.ts @@ -9,7 +9,11 @@ import * as Path from 'path'; import { REPO_ROOT } from '@kbn/utils'; -import { CiStatsReporter, CiStatsReportTestsOptions, CiStatsTestType } from '@kbn/dev-utils'; +import { + CiStatsReporter, + CiStatsReportTestsOptions, + CiStatsTestType, +} from '@kbn/ci-stats-reporter'; import { Config } from '../../config'; import { Runner } from '../../../fake_mocha_types'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js index 84299cba14eaa..973a552ebb728 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js +++ b/packages/kbn-test/src/functional_test_runner/lib/mocha/reporter/reporter.js @@ -9,7 +9,8 @@ import { format } from 'util'; import Mocha from 'mocha'; -import { ToolingLogTextWriter, CiStatsReporter } from '@kbn/dev-utils'; +import { ToolingLogTextWriter } from '@kbn/tooling-log'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; import moment from 'moment'; import { recordLog, snapshotLogsForRunnable, setupJUnitReportGeneration } from '../../../../mocha'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/providers/provider_collection.ts b/packages/kbn-test/src/functional_test_runner/lib/providers/provider_collection.ts index 97d7d43417f91..8723a424f6e22 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/providers/provider_collection.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/providers/provider_collection.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { loadTracer } from '../load_tracer'; import { createAsyncInstance, isAsyncInstance } from './async_instance'; diff --git a/packages/kbn-test/src/functional_test_runner/lib/providers/verbose_instance.ts b/packages/kbn-test/src/functional_test_runner/lib/providers/verbose_instance.ts index 6031a580e64dc..ca4109961b51c 100644 --- a/packages/kbn-test/src/functional_test_runner/lib/providers/verbose_instance.ts +++ b/packages/kbn-test/src/functional_test_runner/lib/providers/verbose_instance.ts @@ -8,7 +8,7 @@ import { inspect } from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; function printArgs(args: any[]): string { return args diff --git a/packages/kbn-test/src/functional_test_runner/public_types.ts b/packages/kbn-test/src/functional_test_runner/public_types.ts index 426fdda74d313..2d632b28d6e21 100644 --- a/packages/kbn-test/src/functional_test_runner/public_types.ts +++ b/packages/kbn-test/src/functional_test_runner/public_types.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type { Config, Lifecycle, TestMetadata, DockerServersService, EsVersion } from './lib'; import type { Test, Suite } from './fake_mocha_types'; diff --git a/packages/kbn-test/src/functional_tests/cli/run_tests/args.js b/packages/kbn-test/src/functional_tests/cli/run_tests/args.js index 20aa65df7299b..d94adcfe615a5 100644 --- a/packages/kbn-test/src/functional_tests/cli/run_tests/args.js +++ b/packages/kbn-test/src/functional_tests/cli/run_tests/args.js @@ -9,7 +9,7 @@ import { resolve } from 'path'; import dedent from 'dedent'; -import { ToolingLog, pickLevelFromFlags } from '@kbn/dev-utils'; +import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log'; import { EsVersion } from '../../../functional_test_runner'; const options = { diff --git a/packages/kbn-test/src/functional_tests/cli/run_tests/args.test.js b/packages/kbn-test/src/functional_tests/cli/run_tests/args.test.js index 72ba541466960..888708a2b9d69 100644 --- a/packages/kbn-test/src/functional_tests/cli/run_tests/args.test.js +++ b/packages/kbn-test/src/functional_tests/cli/run_tests/args.test.js @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { displayHelp, processOptions } from './args'; diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/args.js b/packages/kbn-test/src/functional_tests/cli/start_servers/args.js index d6b8054da3608..527e3ce64613d 100644 --- a/packages/kbn-test/src/functional_tests/cli/start_servers/args.js +++ b/packages/kbn-test/src/functional_tests/cli/start_servers/args.js @@ -9,7 +9,7 @@ import { resolve } from 'path'; import dedent from 'dedent'; -import { ToolingLog, pickLevelFromFlags } from '@kbn/dev-utils'; +import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log'; const options = { help: { desc: 'Display this menu and exit.' }, diff --git a/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js b/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js index 164cf36b915c7..7d6c77be2539e 100644 --- a/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js +++ b/packages/kbn-test/src/functional_tests/cli/start_servers/args.test.js @@ -7,7 +7,7 @@ */ import { displayHelp, processOptions } from './args'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; expect.addSnapshotSerializer(createAbsolutePathSerializer(process.cwd())); diff --git a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts index 879eb8bec8cd0..adbb18b5312d0 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_elasticsearch.ts @@ -7,7 +7,7 @@ */ import { resolve } from 'path'; -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import getPort from 'get-port'; import { KIBANA_ROOT } from './paths'; import type { Config } from '../../functional_test_runner'; diff --git a/packages/kbn-test/src/functional_tests/lib/run_ftr.ts b/packages/kbn-test/src/functional_tests/lib/run_ftr.ts index e339347b07eb5..6887a664d6657 100644 --- a/packages/kbn-test/src/functional_tests/lib/run_ftr.ts +++ b/packages/kbn-test/src/functional_tests/lib/run_ftr.ts @@ -5,7 +5,7 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import { FunctionalTestRunner, readConfigFile, EsVersion } from '../../functional_test_runner'; import { CliError } from './run_cli'; diff --git a/packages/kbn-test/src/functional_tests/tasks.ts b/packages/kbn-test/src/functional_tests/tasks.ts index b1213ceef2905..8116fa25650a1 100644 --- a/packages/kbn-test/src/functional_tests/tasks.ts +++ b/packages/kbn-test/src/functional_tests/tasks.ts @@ -9,7 +9,9 @@ import { relative } from 'path'; import * as Rx from 'rxjs'; import { startWith, switchMap, take } from 'rxjs/operators'; -import { withProcRunner, ToolingLog, getTimeReporter } from '@kbn/dev-utils'; +import { withProcRunner } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { getTimeReporter } from '@kbn/ci-stats-reporter'; import { REPO_ROOT } from '@kbn/utils'; import dedent from 'dedent'; diff --git a/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts b/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts index 94675d87a3a24..6294594ff6cf5 100644 --- a/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts +++ b/packages/kbn-test/src/jest/ci_stats_jest_reporter.ts @@ -9,7 +9,8 @@ import * as Path from 'path'; import getopts from 'getopts'; -import { CiStatsReporter, ToolingLog, CiStatsReportTestsOptions } from '@kbn/dev-utils'; +import { CiStatsReporter, CiStatsReportTestsOptions } from '@kbn/ci-stats-reporter'; +import { ToolingLog } from '@kbn/tooling-log'; import type { Config } from '@jest/types'; import { BaseReporter, Test, TestResult } from '@jest/reporters'; import { ConsoleBuffer } from '@jest/console'; diff --git a/packages/kbn-test/src/jest/run.ts b/packages/kbn-test/src/jest/run.ts index b8617317d6d9f..04e047d694502 100644 --- a/packages/kbn-test/src/jest/run.ts +++ b/packages/kbn-test/src/jest/run.ts @@ -21,7 +21,8 @@ import { resolve, relative, sep as osSep } from 'path'; import { existsSync } from 'fs'; import { run } from 'jest'; import { buildArgv } from 'jest-cli/build/cli'; -import { ToolingLog, getTimeReporter } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { getTimeReporter } from '@kbn/ci-stats-reporter'; import { REPO_ROOT } from '@kbn/utils'; import { map } from 'lodash'; diff --git a/packages/kbn-test/src/kbn_client/kbn_client.ts b/packages/kbn-test/src/kbn_client/kbn_client.ts index e44f500593300..4abf272946e79 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClientImportExport } from './kbn_client_import_export'; import { KbnClientPlugins } from './kbn_client_plugins'; diff --git a/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts b/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts index 6da34228bbe7f..c63864857c253 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client_import_export.ts @@ -12,7 +12,8 @@ import { existsSync } from 'fs'; import Path from 'path'; import FormData from 'form-data'; -import { ToolingLog, isAxiosResponseError, createFailError } from '@kbn/dev-utils'; +import { isAxiosResponseError, createFailError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import { KbnClientRequester, uriencode, ReqOptions } from './kbn_client_requester'; diff --git a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts index c2e4247df1ab0..a57515474faf9 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client_requester.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client_requester.ts @@ -11,7 +11,8 @@ import Https from 'https'; import Qs from 'querystring'; import Axios, { AxiosResponse, ResponseType } from 'axios'; -import { ToolingLog, isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils'; +import { isAxiosRequestError, isAxiosResponseError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; const isConcliftOnGetError = (error: any) => { return ( diff --git a/packages/kbn-test/src/kbn_client/kbn_client_saved_objects.ts b/packages/kbn-test/src/kbn_client/kbn_client_saved_objects.ts index 97292b0268bc4..02640cd2b8268 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client_saved_objects.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client_saved_objects.ts @@ -10,7 +10,8 @@ import { inspect } from 'util'; import * as Rx from 'rxjs'; import { mergeMap } from 'rxjs/operators'; -import { ToolingLog, isAxiosResponseError, createFailError } from '@kbn/dev-utils'; +import { isAxiosResponseError, createFailError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClientRequester, uriencode } from './kbn_client_requester'; diff --git a/packages/kbn-test/src/kbn_client/kbn_client_ui_settings.ts b/packages/kbn-test/src/kbn_client/kbn_client_ui_settings.ts index 7ea685667d48b..7be72e7b484ba 100644 --- a/packages/kbn-test/src/kbn_client/kbn_client_ui_settings.ts +++ b/packages/kbn-test/src/kbn_client/kbn_client_ui_settings.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClientRequester, pathWithSpace } from './kbn_client_requester'; diff --git a/packages/kbn-tooling-log/BUILD.bazel b/packages/kbn-tooling-log/BUILD.bazel new file mode 100644 index 0000000000000..a4953521171cb --- /dev/null +++ b/packages/kbn-tooling-log/BUILD.bazel @@ -0,0 +1,118 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-tooling-log" +PKG_REQUIRE_NAME = "@kbn/tooling-log" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//rxjs", + "@npm//tslib", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//rxjs", + "@npm//tslib", + "@npm//@types/node", + "@npm//@types/jest", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-tooling-log/README.md b/packages/kbn-tooling-log/README.md new file mode 100644 index 0000000000000..d0cef9945d3a7 --- /dev/null +++ b/packages/kbn-tooling-log/README.md @@ -0,0 +1,3 @@ +# @kbn/tooling-log + +Empty package generated by @kbn/generate diff --git a/packages/kbn-tooling-log/jest.config.js b/packages/kbn-tooling-log/jest.config.js new file mode 100644 index 0000000000000..0aee29901d2a5 --- /dev/null +++ b/packages/kbn-tooling-log/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-tooling-log'], +}; diff --git a/packages/kbn-tooling-log/package.json b/packages/kbn-tooling-log/package.json new file mode 100644 index 0000000000000..53137ddf6366e --- /dev/null +++ b/packages/kbn-tooling-log/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/tooling-log", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "kibana": { + "devOnly": true + } +} diff --git a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/log_levels.test.ts.snap b/packages/kbn-tooling-log/src/__snapshots__/log_levels.test.ts.snap similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/__snapshots__/log_levels.test.ts.snap rename to packages/kbn-tooling-log/src/__snapshots__/log_levels.test.ts.snap diff --git a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log.test.ts.snap b/packages/kbn-tooling-log/src/__snapshots__/tooling_log.test.ts.snap similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log.test.ts.snap rename to packages/kbn-tooling-log/src/__snapshots__/tooling_log.test.ts.snap diff --git a/packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log_text_writer.test.ts.snap b/packages/kbn-tooling-log/src/__snapshots__/tooling_log_text_writer.test.ts.snap similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/__snapshots__/tooling_log_text_writer.test.ts.snap rename to packages/kbn-tooling-log/src/__snapshots__/tooling_log_text_writer.test.ts.snap diff --git a/packages/kbn-dev-utils/src/tooling_log/index.ts b/packages/kbn-tooling-log/src/index.ts similarity index 85% rename from packages/kbn-dev-utils/src/tooling_log/index.ts rename to packages/kbn-tooling-log/src/index.ts index 2c7216c87c419..47ac551d76f66 100644 --- a/packages/kbn-dev-utils/src/tooling_log/index.ts +++ b/packages/kbn-tooling-log/src/index.ts @@ -11,7 +11,13 @@ export type { ToolingLogOptions } from './tooling_log'; export type { ToolingLogTextWriterConfig } from './tooling_log_text_writer'; export { ToolingLogTextWriter } from './tooling_log_text_writer'; export type { LogLevel, ParsedLogLevel } from './log_levels'; -export { pickLevelFromFlags, parseLogLevel } from './log_levels'; +export { + DEFAULT_LOG_LEVEL, + LOG_LEVEL_FLAGS, + pickLevelFromFlags, + parseLogLevel, + getLogLevelFlagsHelp, +} from './log_levels'; export { ToolingLogCollectingWriter } from './tooling_log_collecting_writer'; export type { Writer } from './writer'; export type { Message } from './message'; diff --git a/packages/kbn-dev-utils/src/tooling_log/log_levels.test.ts b/packages/kbn-tooling-log/src/log_levels.test.ts similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/log_levels.test.ts rename to packages/kbn-tooling-log/src/log_levels.test.ts diff --git a/packages/kbn-dev-utils/src/tooling_log/log_levels.ts b/packages/kbn-tooling-log/src/log_levels.ts similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/log_levels.ts rename to packages/kbn-tooling-log/src/log_levels.ts diff --git a/packages/kbn-dev-utils/src/tooling_log/message.ts b/packages/kbn-tooling-log/src/message.ts similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/message.ts rename to packages/kbn-tooling-log/src/message.ts diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts b/packages/kbn-tooling-log/src/tooling_log.test.ts similarity index 98% rename from packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts rename to packages/kbn-tooling-log/src/tooling_log.test.ts index 54ac750332c5f..022d56c1731cf 100644 --- a/packages/kbn-dev-utils/src/tooling_log/tooling_log.test.ts +++ b/packages/kbn-tooling-log/src/tooling_log.test.ts @@ -9,11 +9,12 @@ import * as Rx from 'rxjs'; import { toArray, takeUntil } from 'rxjs/operators'; +import { createStripAnsiSerializer } from '@kbn/jest-serializers'; + import { ToolingLog } from './tooling_log'; import { Writer } from './writer'; import { ToolingLogTextWriter } from './tooling_log_text_writer'; import { ToolingLogCollectingWriter } from './tooling_log_collecting_writer'; -import { createStripAnsiSerializer } from '../serializers/strip_ansi_serializer'; import { lastValueFrom } from 'rxjs'; expect.addSnapshotSerializer(createStripAnsiSerializer()); diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log.ts b/packages/kbn-tooling-log/src/tooling_log.ts similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/tooling_log.ts rename to packages/kbn-tooling-log/src/tooling_log.ts diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts b/packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/tooling_log_collecting_writer.ts rename to packages/kbn-tooling-log/src/tooling_log_collecting_writer.ts diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.test.ts b/packages/kbn-tooling-log/src/tooling_log_text_writer.test.ts similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.test.ts rename to packages/kbn-tooling-log/src/tooling_log_text_writer.test.ts diff --git a/packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts b/packages/kbn-tooling-log/src/tooling_log_text_writer.ts similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/tooling_log_text_writer.ts rename to packages/kbn-tooling-log/src/tooling_log_text_writer.ts diff --git a/packages/kbn-dev-utils/src/tooling_log/writer.ts b/packages/kbn-tooling-log/src/writer.ts similarity index 100% rename from packages/kbn-dev-utils/src/tooling_log/writer.ts rename to packages/kbn-tooling-log/src/writer.ts diff --git a/packages/kbn-tooling-log/tsconfig.json b/packages/kbn-tooling-log/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-tooling-log/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/src/cli_plugin/install/settings.test.js b/src/cli_plugin/install/settings.test.js index c7985763524ed..b0accc83971e3 100644 --- a/src/cli_plugin/install/settings.test.js +++ b/src/cli_plugin/install/settings.test.js @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { fromRoot } from '@kbn/utils'; import { parseMilliseconds, parse } from './settings'; diff --git a/src/cli_plugin/remove/settings.test.js b/src/cli_plugin/remove/settings.test.js index ef96bc496d8ce..f369e3e3a1f2f 100644 --- a/src/cli_plugin/remove/settings.test.js +++ b/src/cli_plugin/remove/settings.test.js @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { parse } from './settings'; diff --git a/src/core/server/plugins/plugins_service.test.ts b/src/core/server/plugins/plugins_service.test.ts index 7c6938bdde224..e22a6f09edd18 100644 --- a/src/core/server/plugins/plugins_service.test.ts +++ b/src/core/server/plugins/plugins_service.test.ts @@ -11,7 +11,7 @@ import { mockDiscover, mockPackage } from './plugins_service.test.mocks'; import { resolve, join } from 'path'; import { BehaviorSubject, from } from 'rxjs'; import { schema } from '@kbn/config-schema'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { REPO_ROOT } from '@kbn/utils'; import { ConfigPath, ConfigService, Env } from '../config'; diff --git a/src/core/test_helpers/kbn_server.ts b/src/core/test_helpers/kbn_server.ts index 87026fc3fb9b2..c2eca55e59a9e 100644 --- a/src/core/test_helpers/kbn_server.ts +++ b/src/core/test_helpers/kbn_server.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import { createTestEsCluster, diff --git a/src/dev/build/README.md b/src/dev/build/README.md index 2bf3fbd4bd4f5..776cdf4e4d8d0 100644 --- a/src/dev/build/README.md +++ b/src/dev/build/README.md @@ -36,7 +36,7 @@ The majority of this logic is extracted from the legacy grunt build, and is desi **Platform**: [lib/platform.js] defines the Platform objects, which define the different platforms we build for. Use `config.getTargetPlatforms()` to get the list of platforms we are targeting in this build, `config.getNodePlatforms()` to get the list of platform we will download node for, or `config.getPlatform` to get a specific platform and architecture. -**Log**: We uses the `ToolingLog` defined in [../tooling_log/tooling_log.js] +**Log**: We use the `ToolingLog` defined in [@kbn/tooling-log] **Runner**: [lib/runner.js] defines the runner used to execute tasks. It calls tasks with specific arguments based on whether they are global or not. @@ -48,4 +48,4 @@ The majority of this logic is extracted from the legacy grunt build, and is desi [lib/runner.js]: ./lib/runner.js [lib/build.js]: ./lib/build.js [build_distributables.js]: ./build_distributables.js -[../tooling_log/tooling_log.js]: ../tooling_log/tooling_log.js +[@kbn/tooling-log]: ../../../packages/kbn-tooling-log diff --git a/src/dev/build/args.test.ts b/src/dev/build/args.test.ts index d01a73f08395b..6361b6b618b11 100644 --- a/src/dev/build/args.test.ts +++ b/src/dev/build/args.test.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { ToolingLog, createAnyInstanceSerializer } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { createAnyInstanceSerializer } from '@kbn/jest-serializers'; import { readCliArgs } from './args'; diff --git a/src/dev/build/args.ts b/src/dev/build/args.ts index d1b094e97fdc5..42274cda867a7 100644 --- a/src/dev/build/args.ts +++ b/src/dev/build/args.ts @@ -7,7 +7,7 @@ */ import getopts from 'getopts'; -import { ToolingLog, pickLevelFromFlags } from '@kbn/dev-utils'; +import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log'; import { BuildOptions } from './build_distributables'; diff --git a/src/dev/build/build_distributables.ts b/src/dev/build/build_distributables.ts index f8df9ec61609d..3ec908756c9cf 100644 --- a/src/dev/build/build_distributables.ts +++ b/src/dev/build/build_distributables.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Config, createRunner, Task, GlobalTask } from './lib'; import * as Tasks from './tasks'; diff --git a/src/dev/build/lib/build.test.ts b/src/dev/build/lib/build.test.ts index 176006167ca44..e8d5331439916 100644 --- a/src/dev/build/lib/build.test.ts +++ b/src/dev/build/lib/build.test.ts @@ -7,7 +7,7 @@ */ import { REPO_ROOT } from '@kbn/utils'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { Config } from './config'; import { Build } from './build'; diff --git a/src/dev/build/lib/config.test.ts b/src/dev/build/lib/config.test.ts index 67b29ba27ee5c..0e373bb8794c3 100644 --- a/src/dev/build/lib/config.test.ts +++ b/src/dev/build/lib/config.test.ts @@ -9,7 +9,7 @@ import { resolve } from 'path'; import { REPO_ROOT, kibanaPackageJson } from '@kbn/utils'; -import { createAbsolutePathSerializer } from '@kbn/dev-utils'; +import { createAbsolutePathSerializer } from '@kbn/jest-serializers'; import { Config } from './config'; diff --git a/src/dev/build/lib/download.ts b/src/dev/build/lib/download.ts index cb569e8e738ae..d39cb7d77f961 100644 --- a/src/dev/build/lib/download.ts +++ b/src/dev/build/lib/download.ts @@ -13,7 +13,8 @@ import { setTimeout } from 'timers/promises'; import chalk from 'chalk'; import { createHash } from 'crypto'; import Axios from 'axios'; -import { ToolingLog, isAxiosResponseError } from '@kbn/dev-utils'; +import { isAxiosResponseError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; // https://github.com/axios/axios/tree/ffea03453f77a8176c51554d5f6c3c6829294649/lib/adapters // @ts-expect-error untyped internal module used to prevent axios from using xhr adapter in tests diff --git a/src/dev/build/lib/exec.test.ts b/src/dev/build/lib/exec.test.ts index 97e7f2607ea4c..614ae8bdca349 100644 --- a/src/dev/build/lib/exec.test.ts +++ b/src/dev/build/lib/exec.test.ts @@ -8,12 +8,8 @@ import Path from 'path'; -import { - ToolingLog, - ToolingLogCollectingWriter, - createStripAnsiSerializer, - createRecursiveSerializer, -} from '@kbn/dev-utils'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; +import { createStripAnsiSerializer, createRecursiveSerializer } from '@kbn/jest-serializers'; import { exec } from './exec'; diff --git a/src/dev/build/lib/exec.ts b/src/dev/build/lib/exec.ts index 2418c6145e5c2..ae89c23255e4b 100644 --- a/src/dev/build/lib/exec.ts +++ b/src/dev/build/lib/exec.ts @@ -8,7 +8,7 @@ import execa from 'execa'; import chalk from 'chalk'; -import { ToolingLog, LogLevel } from '@kbn/dev-utils'; +import { ToolingLog, LogLevel } from '@kbn/tooling-log'; import { watchStdioForLine } from './watch_stdio_for_line'; diff --git a/src/dev/build/lib/fs.ts b/src/dev/build/lib/fs.ts index 47b98c9cc398a..1239ad60f145d 100644 --- a/src/dev/build/lib/fs.ts +++ b/src/dev/build/lib/fs.ts @@ -19,7 +19,7 @@ import File from 'vinyl'; import del from 'del'; import deleteEmpty from 'delete-empty'; import tar, { ExtractOptions } from 'tar'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; const pipelineAsync = promisify(pipeline); const mkdirAsync = promisify(fs.mkdir); diff --git a/src/dev/build/lib/integration_tests/download.test.ts b/src/dev/build/lib/integration_tests/download.test.ts index 26e374fa102db..4c5b7025da098 100644 --- a/src/dev/build/lib/integration_tests/download.test.ts +++ b/src/dev/build/lib/integration_tests/download.test.ts @@ -13,12 +13,8 @@ import { readFileSync } from 'fs'; import del from 'del'; import { CI_PARALLEL_PROCESS_PREFIX } from '@kbn/test'; -import { - ToolingLog, - ToolingLogCollectingWriter, - createStripAnsiSerializer, - createReplaceSerializer, -} from '@kbn/dev-utils'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; +import { createStripAnsiSerializer, createReplaceSerializer } from '@kbn/jest-serializers'; import { mkdirp } from '../fs'; import { downloadToDisk, downloadToString } from '../download'; diff --git a/src/dev/build/lib/runner.test.ts b/src/dev/build/lib/runner.test.ts index 17dcb8e1e4b24..7e2c29c3c0c98 100644 --- a/src/dev/build/lib/runner.test.ts +++ b/src/dev/build/lib/runner.test.ts @@ -6,12 +6,8 @@ * Side Public License, v 1. */ -import { - ToolingLog, - ToolingLogCollectingWriter, - createStripAnsiSerializer, - createRecursiveSerializer, -} from '@kbn/dev-utils'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; +import { createStripAnsiSerializer, createRecursiveSerializer } from '@kbn/jest-serializers'; import { Config } from './config'; import { createRunner } from './runner'; import { Build } from './build'; diff --git a/src/dev/build/lib/runner.ts b/src/dev/build/lib/runner.ts index e12f7d24cfc49..416f6ae584b3f 100644 --- a/src/dev/build/lib/runner.ts +++ b/src/dev/build/lib/runner.ts @@ -7,7 +7,7 @@ */ import chalk from 'chalk'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { isErrorLogged, markErrorLogged } from './errors'; import { Build } from './build'; @@ -67,7 +67,7 @@ export function createRunner({ config, log }: Options) { /** * Run a task by calling its `run()` method with three arguments: * `config`: an object with methods for determining top-level config values, see `./config.js` - * `log`: an instance of the `ToolingLog`, see `../../tooling_log/tooling_log.js` + * `log`: an instance of the `ToolingLog` * `builds?`: If task does is not defined as `global: true` then it is called for each build and passed each one here. */ return async function run(task: Task | GlobalTask) { diff --git a/src/dev/build/tasks/build_kibana_platform_plugins.ts b/src/dev/build/tasks/build_kibana_platform_plugins.ts index aa9101abb507f..ffb73666e4468 100644 --- a/src/dev/build/tasks/build_kibana_platform_plugins.ts +++ b/src/dev/build/tasks/build_kibana_platform_plugins.ts @@ -10,7 +10,7 @@ import Path from 'path'; import { REPO_ROOT } from '@kbn/utils'; import { lastValueFrom } from 'rxjs'; -import { CiStatsMetric } from '@kbn/dev-utils'; +import { CiStatsMetric } from '@kbn/ci-stats-reporter'; import { runOptimizer, OptimizerConfig, diff --git a/src/dev/build/tasks/create_archives_task.ts b/src/dev/build/tasks/create_archives_task.ts index 37c4becae76a8..e9a6b23a3f351 100644 --- a/src/dev/build/tasks/create_archives_task.ts +++ b/src/dev/build/tasks/create_archives_task.ts @@ -10,7 +10,7 @@ import Path from 'path'; import Fs from 'fs'; import { promisify } from 'util'; -import { CiStatsMetric } from '@kbn/dev-utils'; +import { CiStatsMetric } from '@kbn/ci-stats-reporter'; import { mkdirp, compressTar, compressZip, Task } from '../lib'; diff --git a/src/dev/build/tasks/generate_packages_optimized_assets.ts b/src/dev/build/tasks/generate_packages_optimized_assets.ts index c8f215ad7632b..8469a769d8c0b 100644 --- a/src/dev/build/tasks/generate_packages_optimized_assets.ts +++ b/src/dev/build/tasks/generate_packages_optimized_assets.ts @@ -19,7 +19,7 @@ import gulpGzip from 'gulp-gzip'; import gulpPostCSS from 'gulp-postcss'; // @ts-expect-error import gulpTerser from 'gulp-terser'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import terser from 'terser'; import vfs from 'vinyl-fs'; import globby from 'globby'; diff --git a/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts index ffcf8f7644620..20128c05033de 100644 --- a/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts +++ b/src/dev/build/tasks/nodejs/download_node_builds_task.test.ts @@ -6,11 +6,8 @@ * Side Public License, v 1. */ -import { - ToolingLog, - ToolingLogCollectingWriter, - createAnyInstanceSerializer, -} from '@kbn/dev-utils'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; +import { createAnyInstanceSerializer } from '@kbn/jest-serializers'; import { Config, Platform } from '../../lib'; import { DownloadNodeBuilds } from './download_node_builds_task'; diff --git a/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts index b8992bf6e590b..bb417cef3d990 100644 --- a/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts +++ b/src/dev/build/tasks/nodejs/extract_node_builds_task.test.ts @@ -10,12 +10,8 @@ import { readFileSync } from 'fs'; import Path from 'path'; import { REPO_ROOT } from '@kbn/utils'; -import { - ToolingLog, - ToolingLogCollectingWriter, - createAbsolutePathSerializer, - createRecursiveSerializer, -} from '@kbn/dev-utils'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; +import { createAbsolutePathSerializer, createRecursiveSerializer } from '@kbn/jest-serializers'; import { Config } from '../../lib'; import { ExtractNodeBuilds } from './extract_node_builds_task'; diff --git a/src/dev/build/tasks/nodejs/node_shasums.test.ts b/src/dev/build/tasks/nodejs/node_shasums.test.ts index 20d1f297b9ae0..fc888851946e2 100644 --- a/src/dev/build/tasks/nodejs/node_shasums.test.ts +++ b/src/dev/build/tasks/nodejs/node_shasums.test.ts @@ -56,7 +56,7 @@ jest.mock('../../lib/download', () => ({ }, })); -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { getNodeShasums } from './node_shasums'; describe('src/dev/build/tasks/nodejs/node_shasums', () => { diff --git a/src/dev/build/tasks/nodejs/node_shasums.ts b/src/dev/build/tasks/nodejs/node_shasums.ts index ca588352ce7bb..850e28d5d3ead 100644 --- a/src/dev/build/tasks/nodejs/node_shasums.ts +++ b/src/dev/build/tasks/nodejs/node_shasums.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { downloadToString } from '../../lib/download'; export async function getNodeShasums(log: ToolingLog, nodeVersion: string) { diff --git a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts index 96d8b7cc6336f..5f495bf3b168f 100644 --- a/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts +++ b/src/dev/build/tasks/nodejs/verify_existing_node_builds_task.test.ts @@ -10,12 +10,8 @@ import Path from 'path'; import Fs from 'fs'; import { REPO_ROOT } from '@kbn/utils'; -import { - ToolingLog, - ToolingLogCollectingWriter, - createAnyInstanceSerializer, - createRecursiveSerializer, -} from '@kbn/dev-utils'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; +import { createAnyInstanceSerializer, createRecursiveSerializer } from '@kbn/jest-serializers'; import { Config, Platform } from '../../lib'; import { VerifyExistingNodeBuilds } from './verify_existing_node_builds_task'; diff --git a/src/dev/build/tasks/os_packages/docker_generator/bundle_dockerfiles.ts b/src/dev/build/tasks/os_packages/docker_generator/bundle_dockerfiles.ts index 9dfff321fc7a2..7f092f399c8ed 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/bundle_dockerfiles.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/bundle_dockerfiles.ts @@ -10,7 +10,7 @@ import { resolve } from 'path'; import { readFileSync } from 'fs'; import { copyFile } from 'fs/promises'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import Mustache from 'mustache'; diff --git a/src/dev/build/tasks/os_packages/docker_generator/run.ts b/src/dev/build/tasks/os_packages/docker_generator/run.ts index c406fe47c1542..264c6e52db0eb 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/run.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/run.ts @@ -10,7 +10,7 @@ import { access, link, unlink, chmod } from 'fs'; import { resolve, basename } from 'path'; import { promisify } from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { kibanaPackageJson } from '@kbn/utils'; import { write, copyAll, mkdirp, exec, Config, Build } from '../../../lib'; diff --git a/src/dev/build/tasks/os_packages/run_fpm.ts b/src/dev/build/tasks/os_packages/run_fpm.ts index 9c3f370ba7e98..d7c0e5f9ac0e1 100644 --- a/src/dev/build/tasks/os_packages/run_fpm.ts +++ b/src/dev/build/tasks/os_packages/run_fpm.ts @@ -8,7 +8,7 @@ import { resolve } from 'path'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { exec, Config, Build } from '../../lib'; diff --git a/src/dev/build/tasks/patch_native_modules_task.ts b/src/dev/build/tasks/patch_native_modules_task.ts index 4bdb5ba7284ee..1c1bebfa86c0e 100644 --- a/src/dev/build/tasks/patch_native_modules_task.ts +++ b/src/dev/build/tasks/patch_native_modules_task.ts @@ -8,7 +8,7 @@ import path from 'path'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { deleteAll, diff --git a/src/dev/chromium_version.ts b/src/dev/chromium_version.ts index eab787a4bd008..0af4c9c2441f1 100644 --- a/src/dev/chromium_version.ts +++ b/src/dev/chromium_version.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { run, ToolingLog } from '@kbn/dev-utils'; +import { run } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import chalk from 'chalk'; import cheerio from 'cheerio'; diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js index d8b67b677ae1b..8ec97d3fbd385 100644 --- a/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js +++ b/src/dev/code_coverage/ingest_coverage/__tests__/enumerate_patterns.test.js @@ -7,7 +7,7 @@ */ import { enumeratePatterns } from '../team_assignment/enumerate_patterns'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; const log = new ToolingLog({ diff --git a/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js b/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js index 5e33f2ba548aa..266a38dc38e71 100644 --- a/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js +++ b/src/dev/code_coverage/ingest_coverage/__tests__/transforms.test.js @@ -14,7 +14,7 @@ import { teamAssignment, last, } from '../transforms'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; describe(`Transform fns`, () => { describe(`ciRunUrl`, () => { diff --git a/src/dev/eslint/lint_files.ts b/src/dev/eslint/lint_files.ts index 5c6118edeb2ec..d74e3cafc8de6 100644 --- a/src/dev/eslint/lint_files.ts +++ b/src/dev/eslint/lint_files.ts @@ -9,7 +9,8 @@ import { CLIEngine } from 'eslint'; import { REPO_ROOT } from '@kbn/utils'; -import { createFailError, ToolingLog } from '@kbn/dev-utils'; +import { createFailError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { File } from '../file'; /** diff --git a/src/dev/eslint/pick_files_to_lint.ts b/src/dev/eslint/pick_files_to_lint.ts index 0fd3ab926e14e..c65f4e6343787 100644 --- a/src/dev/eslint/pick_files_to_lint.ts +++ b/src/dev/eslint/pick_files_to_lint.ts @@ -8,7 +8,7 @@ import { CLIEngine } from 'eslint'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { File } from '../file'; /** diff --git a/src/dev/github/search_and_save_pr_list.ts b/src/dev/github/search_and_save_pr_list.ts index 1c6dbc6c99746..ff5ae8fb67bcc 100644 --- a/src/dev/github/search_and_save_pr_list.ts +++ b/src/dev/github/search_and_save_pr_list.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { Octokit } from '@octokit/rest'; import fs from 'fs'; diff --git a/src/dev/i18n/integrate_locale_files.ts b/src/dev/i18n/integrate_locale_files.ts index 773f7659eb082..65558c4624064 100644 --- a/src/dev/i18n/integrate_locale_files.ts +++ b/src/dev/i18n/integrate_locale_files.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { i18n } from '@kbn/i18n'; import path from 'path'; diff --git a/src/dev/i18n/tasks/check_compatibility.ts b/src/dev/i18n/tasks/check_compatibility.ts index cf8a294d8a405..b6b94a5aba666 100644 --- a/src/dev/i18n/tasks/check_compatibility.ts +++ b/src/dev/i18n/tasks/check_compatibility.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { integrateLocaleFiles, I18nConfig } from '..'; export interface I18nFlags { diff --git a/src/dev/notice/cli.js b/src/dev/notice/cli.js index 67aae0d5913bc..8aece9f51d9e6 100644 --- a/src/dev/notice/cli.js +++ b/src/dev/notice/cli.js @@ -12,7 +12,7 @@ import { resolve } from 'path'; import getopts from 'getopts'; import dedent from 'dedent'; import { REPO_ROOT } from '@kbn/utils'; -import { ToolingLog, pickLevelFromFlags } from '@kbn/dev-utils'; +import { ToolingLog, pickLevelFromFlags } from '@kbn/tooling-log'; import { generateNoticeFromSource } from './generate_notice_from_source'; diff --git a/src/dev/notice/generate_notice_from_source.ts b/src/dev/notice/generate_notice_from_source.ts index fc2da1c4fc7dc..8d162154bc5f0 100644 --- a/src/dev/notice/generate_notice_from_source.ts +++ b/src/dev/notice/generate_notice_from_source.ts @@ -7,7 +7,7 @@ */ import vfs from 'vinyl-fs'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; const NOTICE_COMMENT_RE = /\/\*[\s\n\*]*@notice([\w\W]+?)\*\//g; const NEWLINE_RE = /\r?\n/g; diff --git a/src/dev/run_check_published_api_changes.ts b/src/dev/run_check_published_api_changes.ts index 452922ac56bcd..7ca27e51dd4b5 100644 --- a/src/dev/run_check_published_api_changes.ts +++ b/src/dev/run_check_published_api_changes.ts @@ -6,7 +6,8 @@ * Side Public License, v 1. */ -import { ToolingLog, getTimeReporter } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { getTimeReporter } from '@kbn/ci-stats-reporter'; import { Extractor, IConfigFile, diff --git a/src/dev/run_i18n_check.ts b/src/dev/run_i18n_check.ts index 8aa93d33f60fd..074fd47d95683 100644 --- a/src/dev/run_i18n_check.ts +++ b/src/dev/run_i18n_check.ts @@ -9,7 +9,9 @@ import chalk from 'chalk'; import Listr from 'listr'; -import { createFailError, run, ToolingLog, getTimeReporter } from '@kbn/dev-utils'; +import { createFailError, run } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; +import { getTimeReporter } from '@kbn/ci-stats-reporter'; import { ErrorReporter, I18nConfig } from './i18n'; import { extractDefaultMessages, diff --git a/src/dev/storybook/commands/clean.ts b/src/dev/storybook/commands/clean.ts index e770939765991..2688ef4bcdb74 100644 --- a/src/dev/storybook/commands/clean.ts +++ b/src/dev/storybook/commands/clean.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import { join } from 'path'; import del from 'del'; diff --git a/src/dev/typescript/build_ts_refs.ts b/src/dev/typescript/build_ts_refs.ts index f3896cf676e27..9640e0951965b 100644 --- a/src/dev/typescript/build_ts_refs.ts +++ b/src/dev/typescript/build_ts_refs.ts @@ -8,7 +8,8 @@ import Path from 'path'; -import { ToolingLog, ProcRunner } from '@kbn/dev-utils'; +import { ProcRunner } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import { ROOT_REFS_CONFIG_PATH } from './root_refs_config'; diff --git a/src/dev/typescript/ref_output_cache/archives.ts b/src/dev/typescript/ref_output_cache/archives.ts index 4db4022180997..882315b919031 100644 --- a/src/dev/typescript/ref_output_cache/archives.ts +++ b/src/dev/typescript/ref_output_cache/archives.ts @@ -12,7 +12,7 @@ import Path from 'path'; import { promisify } from 'util'; import { pipeline } from 'stream'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import Axios from 'axios'; import del from 'del'; diff --git a/src/dev/typescript/ref_output_cache/integration_tests/archives.test.ts b/src/dev/typescript/ref_output_cache/integration_tests/archives.test.ts index 60ba3a4f659b3..b7dc6d28b78ee 100644 --- a/src/dev/typescript/ref_output_cache/integration_tests/archives.test.ts +++ b/src/dev/typescript/ref_output_cache/integration_tests/archives.test.ts @@ -12,13 +12,12 @@ import { Readable } from 'stream'; import del from 'del'; import cpy from 'cpy'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; import { - ToolingLog, createAbsolutePathSerializer, createRecursiveSerializer, - ToolingLogCollectingWriter, createStripAnsiSerializer, -} from '@kbn/dev-utils'; +} from '@kbn/jest-serializers'; expect.addSnapshotSerializer(createAbsolutePathSerializer()); expect.addSnapshotSerializer(createStripAnsiSerializer()); diff --git a/src/dev/typescript/ref_output_cache/integration_tests/ref_output_cache.test.ts b/src/dev/typescript/ref_output_cache/integration_tests/ref_output_cache.test.ts index 370ef9d17a04e..a44d309cb9ddd 100644 --- a/src/dev/typescript/ref_output_cache/integration_tests/ref_output_cache.test.ts +++ b/src/dev/typescript/ref_output_cache/integration_tests/ref_output_cache.test.ts @@ -13,12 +13,8 @@ import del from 'del'; import cpy from 'cpy'; import globby from 'globby'; import normalize from 'normalize-path'; -import { - ToolingLog, - createAbsolutePathSerializer, - createStripAnsiSerializer, - ToolingLogCollectingWriter, -} from '@kbn/dev-utils'; +import { ToolingLog, ToolingLogCollectingWriter } from '@kbn/tooling-log'; +import { createAbsolutePathSerializer, createStripAnsiSerializer } from '@kbn/jest-serializers'; import { RefOutputCache, OUTDIR_MERGE_BASE_FILENAME } from '../ref_output_cache'; import { Archives } from '../archives'; diff --git a/src/dev/typescript/ref_output_cache/ref_output_cache.ts b/src/dev/typescript/ref_output_cache/ref_output_cache.ts index 32b08ec1ba0df..80d2a6052000b 100644 --- a/src/dev/typescript/ref_output_cache/ref_output_cache.ts +++ b/src/dev/typescript/ref_output_cache/ref_output_cache.ts @@ -9,7 +9,8 @@ import Path from 'path'; import Fs from 'fs/promises'; -import { ToolingLog, extract } from '@kbn/dev-utils'; +import { extract } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { kibanaPackageJson } from '@kbn/utils'; import del from 'del'; import tempy from 'tempy'; diff --git a/src/dev/typescript/ref_output_cache/repo_info.ts b/src/dev/typescript/ref_output_cache/repo_info.ts index 0bba010bc185d..ab6470e5b1401 100644 --- a/src/dev/typescript/ref_output_cache/repo_info.ts +++ b/src/dev/typescript/ref_output_cache/repo_info.ts @@ -9,7 +9,7 @@ import Path from 'path'; import execa from 'execa'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; export class RepoInfo { constructor( diff --git a/src/dev/typescript/root_refs_config.ts b/src/dev/typescript/root_refs_config.ts index e20b1ab46cd82..dc06a53988ab4 100644 --- a/src/dev/typescript/root_refs_config.ts +++ b/src/dev/typescript/root_refs_config.ts @@ -10,7 +10,7 @@ import Path from 'path'; import Fs from 'fs/promises'; import dedent from 'dedent'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import normalize from 'normalize-path'; diff --git a/test/common/services/randomness.ts b/test/common/services/randomness.ts index 82f06fb681066..c799c34539f15 100644 --- a/test/common/services/randomness.ts +++ b/test/common/services/randomness.ts @@ -7,7 +7,7 @@ */ import Chance from 'chance'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { FtrService } from '../ftr_provider_context'; diff --git a/test/common/services/retry/retry_for_success.ts b/test/common/services/retry/retry_for_success.ts index ed2ff480db20d..8b131db4c05e5 100644 --- a/test/common/services/retry/retry_for_success.ts +++ b/test/common/services/retry/retry_for_success.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { inspect } from 'util'; const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); diff --git a/test/common/services/retry/retry_for_truthy.ts b/test/common/services/retry/retry_for_truthy.ts index 6bee196fa9597..dca9c3f2c02cf 100644 --- a/test/common/services/retry/retry_for_truthy.ts +++ b/test/common/services/retry/retry_for_truthy.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { retryForSuccess } from './retry_for_success'; diff --git a/test/common/services/saved_object_info/saved_object_info.ts b/test/common/services/saved_object_info/saved_object_info.ts index 3442efcc98438..a1b98cbd408bf 100644 --- a/test/common/services/saved_object_info/saved_object_info.ts +++ b/test/common/services/saved_object_info/saved_object_info.ts @@ -12,7 +12,7 @@ import { Either, fromNullable, chain, getOrElse, toError } from 'fp-ts/Either'; import { flow, pipe } from 'fp-ts/function'; import * as TE from 'fp-ts/lib/TaskEither'; import * as T from 'fp-ts/lib/Task'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { FtrService } from '../../ftr_provider_context'; import { print } from './utils'; diff --git a/test/common/services/saved_object_info/utils.ts b/test/common/services/saved_object_info/utils.ts index f007710f2b14b..24a63dd60636d 100644 --- a/test/common/services/saved_object_info/utils.ts +++ b/test/common/services/saved_object_info/utils.ts @@ -7,7 +7,8 @@ */ import { inspect } from 'util'; -import { createFlagError, ToolingLog } from '@kbn/dev-utils'; +import { createFlagError } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; interface ResolvedPayload { xs: any; diff --git a/test/common/services/security/role.ts b/test/common/services/security/role.ts index 98cf597fc76d4..51b50a5dda82f 100644 --- a/test/common/services/security/role.ts +++ b/test/common/services/security/role.ts @@ -7,7 +7,7 @@ */ import util from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient } from '@kbn/test'; export class Role { diff --git a/test/common/services/security/role_mappings.ts b/test/common/services/security/role_mappings.ts index af9204866ad47..6dad4dec41d78 100644 --- a/test/common/services/security/role_mappings.ts +++ b/test/common/services/security/role_mappings.ts @@ -7,7 +7,7 @@ */ import util from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient } from '@kbn/test'; export class RoleMappings { diff --git a/test/common/services/security/system_indices_user.ts b/test/common/services/security/system_indices_user.ts index 091621207a671..9bfaddd9f0306 100644 --- a/test/common/services/security/system_indices_user.ts +++ b/test/common/services/security/system_indices_user.ts @@ -7,7 +7,7 @@ */ import { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { systemIndicesSuperuser, createEsClientForFtrConfig, diff --git a/test/common/services/security/user.ts b/test/common/services/security/user.ts index d6813105ecbf6..8276834fd519c 100644 --- a/test/common/services/security/user.ts +++ b/test/common/services/security/user.ts @@ -7,7 +7,7 @@ */ import util from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient } from '@kbn/test'; export class User { diff --git a/test/functional/services/lib/compare_pngs.ts b/test/functional/services/lib/compare_pngs.ts index 5fb0c4d6ad1dc..7a48bd9e4c6fd 100644 --- a/test/functional/services/lib/compare_pngs.ts +++ b/test/functional/services/lib/compare_pngs.ts @@ -8,7 +8,7 @@ import { parse, join } from 'path'; import Jimp from 'jimp'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { promises as fs } from 'fs'; import path from 'path'; diff --git a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts b/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts index ae03721a6e7b8..1a35f7c39aa28 100644 --- a/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts +++ b/test/functional/services/lib/web_element_wrapper/web_element_wrapper.ts @@ -11,7 +11,7 @@ import { WebElement, WebDriver, By, Key } from 'selenium-webdriver'; import { PNG } from 'pngjs'; import cheerio from 'cheerio'; import testSubjSelector from '@kbn/test-subj-selector'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { CustomCheerio, CustomCheerioStatic } from './custom_cheerio_api'; // @ts-ignore not supported yet import { scrollIntoViewIfNecessary } from './scroll_into_view_if_necessary'; diff --git a/test/functional/services/remote/webdriver.ts b/test/functional/services/remote/webdriver.ts index 2945418f5f4c7..21eae36a67b7c 100644 --- a/test/functional/services/remote/webdriver.ts +++ b/test/functional/services/remote/webdriver.ts @@ -12,7 +12,7 @@ import Fs from 'fs'; import * as Rx from 'rxjs'; import { mergeMap, map, takeUntil, catchError, ignoreElements } from 'rxjs/operators'; import { Lifecycle } from '@kbn/test'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import chromeDriver from 'chromedriver'; // @ts-ignore types not available import geckoDriver from 'geckodriver'; diff --git a/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts b/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts index 7ff848f79185d..d9998d235a46e 100644 --- a/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts +++ b/x-pack/plugins/fleet/scripts/install_all_packages/install_all_packages.ts @@ -6,7 +6,7 @@ */ import fetch from 'node-fetch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import ReadPackage from 'read-pkg'; const REGISTRY_URL = 'https://epr-snapshot.elastic.co'; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts b/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts index 48a9cf82d720d..4160c11fc3521 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/common/random_policy_id_generator.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient } from '@kbn/test'; import { AxiosResponse } from 'axios'; import { diff --git a/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts b/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts index 1d0b07f1b64e1..a564e627c9909 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/resolver_generator_script.ts @@ -10,7 +10,8 @@ import yargs from 'yargs'; import fs from 'fs'; import { Client, errors } from '@elastic/elasticsearch'; import type { ClientOptions } from '@elastic/elasticsearch/lib/client'; -import { ToolingLog, CA_CERT_PATH } from '@kbn/dev-utils'; +import { CA_CERT_PATH } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient, KbnClientOptions } from '@kbn/test'; import { indexHostsAndAlerts } from '../../common/endpoint/index_data'; import { ANCESTRY_LIMIT, EndpointDocGenerator } from '../../common/endpoint/generate_data'; diff --git a/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts b/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts index 72f7b2688de1c..9df43704da81c 100644 --- a/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts +++ b/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts @@ -6,7 +6,7 @@ */ import minimist from 'minimist'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { KbnClient } from '@kbn/test'; import pMap from 'p-map'; import { basename } from 'path'; diff --git a/x-pack/tasks/build.ts b/x-pack/tasks/build.ts index 03beae1108bbd..4680464976d79 100644 --- a/x-pack/tasks/build.ts +++ b/x-pack/tasks/build.ts @@ -12,7 +12,8 @@ import { promisify } from 'util'; import { pipeline } from 'stream'; import { REPO_ROOT } from '@kbn/utils'; -import { ToolingLog, transformFileStream, transformFileWithBabel } from '@kbn/dev-utils'; +import { transformFileStream, transformFileWithBabel } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import gulp from 'gulp'; import del from 'del'; import fancyLog from 'fancy-log'; diff --git a/x-pack/test/apm_api_integration/tests/alerts/wait_for_rule_status.ts b/x-pack/test/apm_api_integration/tests/alerts/wait_for_rule_status.ts index b31f8b70eab10..f4814358f1636 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/wait_for_rule_status.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/wait_for_rule_status.ts @@ -4,7 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import expect from '@kbn/expect'; import type SuperTest from 'supertest'; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts index 76848db5d55e8..231d4138b1d19 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/create_endpoint_exceptions.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import expect from '@kbn/expect'; import type SuperTest from 'supertest'; diff --git a/x-pack/test/detection_engine_api_integration/utils/count_down_es.ts b/x-pack/test/detection_engine_api_integration/utils/count_down_es.ts index d587e5e40864b..cfbcafbc06cb6 100644 --- a/x-pack/test/detection_engine_api_integration/utils/count_down_es.ts +++ b/x-pack/test/detection_engine_api_integration/utils/count_down_es.ts @@ -6,7 +6,7 @@ */ import type { TransportResult } from '@elastic/elasticsearch'; -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import { countDownTest } from './count_down_test'; /** diff --git a/x-pack/test/detection_engine_api_integration/utils/count_down_test.ts b/x-pack/test/detection_engine_api_integration/utils/count_down_test.ts index 57cb06243d78e..39292a9cbbbb7 100644 --- a/x-pack/test/detection_engine_api_integration/utils/count_down_test.ts +++ b/x-pack/test/detection_engine_api_integration/utils/count_down_test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; /** * Does a plain countdown and checks against a boolean to determine if to wait and try again. diff --git a/x-pack/test/detection_engine_api_integration/utils/create_container_with_endpoint_entries.ts b/x-pack/test/detection_engine_api_integration/utils/create_container_with_endpoint_entries.ts index ae4bfa40a39a3..ca04e01c654e9 100644 --- a/x-pack/test/detection_engine_api_integration/utils/create_container_with_endpoint_entries.ts +++ b/x-pack/test/detection_engine_api_integration/utils/create_container_with_endpoint_entries.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { CreateExceptionListItemSchema, diff --git a/x-pack/test/detection_engine_api_integration/utils/create_container_with_entries.ts b/x-pack/test/detection_engine_api_integration/utils/create_container_with_entries.ts index 9bd9cef7229bd..169a9bcea239b 100644 --- a/x-pack/test/detection_engine_api_integration/utils/create_container_with_entries.ts +++ b/x-pack/test/detection_engine_api_integration/utils/create_container_with_entries.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { CreateExceptionListItemSchema } from '@kbn/securitysolution-io-ts-list-types'; import type { ListArray, NonEmptyEntriesArray } from '@kbn/securitysolution-io-ts-list-types'; diff --git a/x-pack/test/detection_engine_api_integration/utils/create_exception_list.ts b/x-pack/test/detection_engine_api_integration/utils/create_exception_list.ts index e2942d0262705..24ebabb5243b2 100644 --- a/x-pack/test/detection_engine_api_integration/utils/create_exception_list.ts +++ b/x-pack/test/detection_engine_api_integration/utils/create_exception_list.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { CreateExceptionListSchema, diff --git a/x-pack/test/detection_engine_api_integration/utils/create_exception_list_item.ts b/x-pack/test/detection_engine_api_integration/utils/create_exception_list_item.ts index c912446b1b08d..fccbd3e243b17 100644 --- a/x-pack/test/detection_engine_api_integration/utils/create_exception_list_item.ts +++ b/x-pack/test/detection_engine_api_integration/utils/create_exception_list_item.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { CreateExceptionListItemSchema, diff --git a/x-pack/test/detection_engine_api_integration/utils/create_new_action.ts b/x-pack/test/detection_engine_api_integration/utils/create_new_action.ts index 349a8afdf977c..d5093d8d5d39b 100644 --- a/x-pack/test/detection_engine_api_integration/utils/create_new_action.ts +++ b/x-pack/test/detection_engine_api_integration/utils/create_new_action.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { getWebHookAction } from './get_web_hook_action'; diff --git a/x-pack/test/detection_engine_api_integration/utils/create_rule.ts b/x-pack/test/detection_engine_api_integration/utils/create_rule.ts index caedcf357d363..ab162724ecb68 100644 --- a/x-pack/test/detection_engine_api_integration/utils/create_rule.ts +++ b/x-pack/test/detection_engine_api_integration/utils/create_rule.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { CreateRulesSchema, diff --git a/x-pack/test/detection_engine_api_integration/utils/create_rule_with_exception_entries.ts b/x-pack/test/detection_engine_api_integration/utils/create_rule_with_exception_entries.ts index da4b2d1b5a263..5b47de64d9c0f 100644 --- a/x-pack/test/detection_engine_api_integration/utils/create_rule_with_exception_entries.ts +++ b/x-pack/test/detection_engine_api_integration/utils/create_rule_with_exception_entries.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { NonEmptyEntriesArray, OsTypeArray } from '@kbn/securitysolution-io-ts-list-types'; import type { diff --git a/x-pack/test/detection_engine_api_integration/utils/create_signals_index.ts b/x-pack/test/detection_engine_api_integration/utils/create_signals_index.ts index 13ddf59a40257..5f490f2dc7c60 100644 --- a/x-pack/test/detection_engine_api_integration/utils/create_signals_index.ts +++ b/x-pack/test/detection_engine_api_integration/utils/create_signals_index.ts @@ -6,7 +6,7 @@ */ import type SuperTest from 'supertest'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { DETECTION_ENGINE_INDEX_URL } from '@kbn/security-solution-plugin/common/constants'; import { countDownTest } from './count_down_test'; diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_all_alerts.ts b/x-pack/test/detection_engine_api_integration/utils/delete_all_alerts.ts index cd0382d6fed19..95dd94399e414 100644 --- a/x-pack/test/detection_engine_api_integration/utils/delete_all_alerts.ts +++ b/x-pack/test/detection_engine_api_integration/utils/delete_all_alerts.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_all_event_log_execution_events.ts b/x-pack/test/detection_engine_api_integration/utils/delete_all_event_log_execution_events.ts index 4e3ba89fcb9c9..6ff1e9fda30be 100644 --- a/x-pack/test/detection_engine_api_integration/utils/delete_all_event_log_execution_events.ts +++ b/x-pack/test/detection_engine_api_integration/utils/delete_all_event_log_execution_events.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type { Client } from '@elastic/elasticsearch'; import { countDownES } from './count_down_es'; diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_all_rule_execution_info.ts b/x-pack/test/detection_engine_api_integration/utils/delete_all_rule_execution_info.ts index 849c81d4f98db..3a7e3c91fd402 100644 --- a/x-pack/test/detection_engine_api_integration/utils/delete_all_rule_execution_info.ts +++ b/x-pack/test/detection_engine_api_integration/utils/delete_all_rule_execution_info.ts @@ -6,7 +6,7 @@ */ import type { Client } from '@elastic/elasticsearch'; -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import { countDownES } from './count_down_es'; /** diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_exception_list.ts b/x-pack/test/detection_engine_api_integration/utils/delete_exception_list.ts index f5f98d1330401..499f5b94a9752 100644 --- a/x-pack/test/detection_engine_api_integration/utils/delete_exception_list.ts +++ b/x-pack/test/detection_engine_api_integration/utils/delete_exception_list.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { EXCEPTION_LIST_URL } from '@kbn/securitysolution-list-constants'; import type { FullResponseSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request'; diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_rule.ts b/x-pack/test/detection_engine_api_integration/utils/delete_rule.ts index cf784df40dc5b..2e01c61c33595 100644 --- a/x-pack/test/detection_engine_api_integration/utils/delete_rule.ts +++ b/x-pack/test/detection_engine_api_integration/utils/delete_rule.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { FullResponseSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request'; diff --git a/x-pack/test/detection_engine_api_integration/utils/delete_signals_index.ts b/x-pack/test/detection_engine_api_integration/utils/delete_signals_index.ts index a422b54ef9f61..875dfd8025989 100644 --- a/x-pack/test/detection_engine_api_integration/utils/delete_signals_index.ts +++ b/x-pack/test/detection_engine_api_integration/utils/delete_signals_index.ts @@ -6,7 +6,7 @@ */ import type SuperTest from 'supertest'; -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import { DETECTION_ENGINE_INDEX_URL } from '@kbn/security-solution-plugin/common/constants'; import { countDownTest } from './count_down_test'; diff --git a/x-pack/test/detection_engine_api_integration/utils/downgrade_immutable_rule.ts b/x-pack/test/detection_engine_api_integration/utils/downgrade_immutable_rule.ts index 9e49420f34329..36ebfaee231d9 100644 --- a/x-pack/test/detection_engine_api_integration/utils/downgrade_immutable_rule.ts +++ b/x-pack/test/detection_engine_api_integration/utils/downgrade_immutable_rule.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type { Client } from '@elastic/elasticsearch'; import { INTERNAL_RULE_ID_KEY } from '@kbn/security-solution-plugin/common/constants'; import { countDownES } from './count_down_es'; diff --git a/x-pack/test/detection_engine_api_integration/utils/finalize_signals_migration.ts b/x-pack/test/detection_engine_api_integration/utils/finalize_signals_migration.ts index c3e4a4ada5bae..e52c85c229edb 100644 --- a/x-pack/test/detection_engine_api_integration/utils/finalize_signals_migration.ts +++ b/x-pack/test/detection_engine_api_integration/utils/finalize_signals_migration.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { DETECTION_ENGINE_SIGNALS_FINALIZE_MIGRATION_URL } from '@kbn/security-solution-plugin/common/constants'; diff --git a/x-pack/test/detection_engine_api_integration/utils/find_immutable_rule_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/find_immutable_rule_by_id.ts index 0281bce218bef..2d77cffcdfe41 100644 --- a/x-pack/test/detection_engine_api_integration/utils/find_immutable_rule_by_id.ts +++ b/x-pack/test/detection_engine_api_integration/utils/find_immutable_rule_by_id.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { FullResponseSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_event_log_execute_complete_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/get_event_log_execute_complete_by_id.ts index 29d81e80dded2..b6750c9aa168a 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_event_log_execute_complete_by_id.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_event_log_execute_complete_by_id.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type { Client } from '@elastic/elasticsearch'; import type { SearchTotalHits } from '@elastic/elasticsearch/lib/api/types'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_open_signals.ts b/x-pack/test/detection_engine_api_integration/utils/get_open_signals.ts index caf496716f7f2..fcbfadec612d5 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_open_signals.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_open_signals.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { Client } from '@elastic/elasticsearch'; import type { FullResponseSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/request'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_prepackaged_rule_status.ts b/x-pack/test/detection_engine_api_integration/utils/get_prepackaged_rule_status.ts index aa1a32add99ab..b6771cbb85f9c 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_prepackaged_rule_status.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_prepackaged_rule_status.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { PrePackagedRulesAndTimelinesStatusSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/response'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_rule.ts b/x-pack/test/detection_engine_api_integration/utils/get_rule.ts index 0a79ab9d7ae40..da28e867bc976 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_rule.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_rule.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { RulesSchema } from '@kbn/security-solution-plugin/common/detection_engine/schemas/response/rules_schema'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_security_telemetry_stats.ts b/x-pack/test/detection_engine_api_integration/utils/get_security_telemetry_stats.ts index 073fb920b37b2..dd243dd3ca581 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_security_telemetry_stats.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_security_telemetry_stats.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { SECURITY_TELEMETRY_URL } from '@kbn/security-solution-plugin/common/constants'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_id.ts b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_id.ts index 7f90ad1189ca0..088214a52f6ac 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_id.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_id.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import type { DetectionAlert } from '@kbn/security-solution-plugin/common/detection_engine/schemas/alerts'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_ids.ts b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_ids.ts index 3a8da122fbb4d..b534925b60118 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_ids.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_ids.ts @@ -6,7 +6,7 @@ */ import { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { DetectionAlert } from '@kbn/security-solution-plugin/common/detection_engine/schemas/alerts'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_rule_ids.ts b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_rule_ids.ts index 0345b22504759..85ad0e3d89acb 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_signals_by_rule_ids.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_signals_by_rule_ids.ts @@ -6,7 +6,7 @@ */ import type { SearchResponse } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { DetectionAlert } from '@kbn/security-solution-plugin/common/detection_engine/schemas/alerts'; diff --git a/x-pack/test/detection_engine_api_integration/utils/get_stats.ts b/x-pack/test/detection_engine_api_integration/utils/get_stats.ts index 239fca801e107..0871012f8749f 100644 --- a/x-pack/test/detection_engine_api_integration/utils/get_stats.ts +++ b/x-pack/test/detection_engine_api_integration/utils/get_stats.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import type { DetectionMetrics } from '@kbn/security-solution-plugin/server/usage/detections/types'; diff --git a/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts b/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts index cf2438ebdefbb..63f8c9f2c8e1b 100644 --- a/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts +++ b/x-pack/test/detection_engine_api_integration/utils/index_event_log_execution_events.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type { Client } from '@elastic/elasticsearch'; /** diff --git a/x-pack/test/detection_engine_api_integration/utils/install_prepackaged_rules.ts b/x-pack/test/detection_engine_api_integration/utils/install_prepackaged_rules.ts index 3c0a32d266202..c75e8203bf6cd 100644 --- a/x-pack/test/detection_engine_api_integration/utils/install_prepackaged_rules.ts +++ b/x-pack/test/detection_engine_api_integration/utils/install_prepackaged_rules.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { DETECTION_ENGINE_PREPACKAGED_URL } from '@kbn/security-solution-plugin/common/constants'; diff --git a/x-pack/test/detection_engine_api_integration/utils/start_signals_migration.ts b/x-pack/test/detection_engine_api_integration/utils/start_signals_migration.ts index f334ed3bbdb33..0470266714fd2 100644 --- a/x-pack/test/detection_engine_api_integration/utils/start_signals_migration.ts +++ b/x-pack/test/detection_engine_api_integration/utils/start_signals_migration.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { DETECTION_ENGINE_SIGNALS_MIGRATION_URL } from '@kbn/security-solution-plugin/common/constants'; diff --git a/x-pack/test/detection_engine_api_integration/utils/update_rule.ts b/x-pack/test/detection_engine_api_integration/utils/update_rule.ts index 8e9b64506a140..c66d86c5594d0 100644 --- a/x-pack/test/detection_engine_api_integration/utils/update_rule.ts +++ b/x-pack/test/detection_engine_api_integration/utils/update_rule.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { DETECTION_ENGINE_RULES_URL } from '@kbn/security-solution-plugin/common/constants'; diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for.ts index ff113526798f3..dfa20bd7019d8 100644 --- a/x-pack/test/detection_engine_api_integration/utils/wait_for.ts +++ b/x-pack/test/detection_engine_api_integration/utils/wait_for.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; // Similar to ReactJs's waitFor from here: https://testing-library.com/docs/dom-testing-library/api-async#waitfor export const waitFor = async ( diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_alert_to_complete.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_alert_to_complete.ts index 3cdf38a7120c8..381116b5a65d2 100644 --- a/x-pack/test/detection_engine_api_integration/utils/wait_for_alert_to_complete.ts +++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_alert_to_complete.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { waitFor } from './wait_for'; diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_event_log_execute_complete.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_event_log_execute_complete.ts index 7af010055b26e..0b86a028d036a 100644 --- a/x-pack/test/detection_engine_api_integration/utils/wait_for_event_log_execute_complete.ts +++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_event_log_execute_complete.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type { Client } from '@elastic/elasticsearch'; import { waitFor } from './wait_for'; diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_index_to_populate.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_index_to_populate.ts index 2ba7f56813a86..ceba42efd1793 100644 --- a/x-pack/test/detection_engine_api_integration/utils/wait_for_index_to_populate.ts +++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_index_to_populate.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type { Client } from '@elastic/elasticsearch'; import { waitFor } from './wait_for'; diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_rule_success_or_status.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_rule_success_or_status.ts index c09ca5c2b9679..0ab4385a54e66 100644 --- a/x-pack/test/detection_engine_api_integration/utils/wait_for_rule_success_or_status.ts +++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_rule_success_or_status.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { RuleExecutionStatus } from '@kbn/security-solution-plugin/common/detection_engine/schemas/common'; diff --git a/x-pack/test/detection_engine_api_integration/utils/wait_for_signals_to_be_present.ts b/x-pack/test/detection_engine_api_integration/utils/wait_for_signals_to_be_present.ts index 398a921823848..59407b116b2ac 100644 --- a/x-pack/test/detection_engine_api_integration/utils/wait_for_signals_to_be_present.ts +++ b/x-pack/test/detection_engine_api_integration/utils/wait_for_signals_to_be_present.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { ToolingLog } from '@kbn/dev-utils'; +import type { ToolingLog } from '@kbn/tooling-log'; import type SuperTest from 'supertest'; import { getSignalsByIds } from './get_signals_by_ids'; diff --git a/x-pack/test/fleet_api_integration/helpers.ts b/x-pack/test/fleet_api_integration/helpers.ts index 659e28e3d0aed..42b83ea90a47d 100644 --- a/x-pack/test/fleet_api_integration/helpers.ts +++ b/x-pack/test/fleet_api_integration/helpers.ts @@ -6,7 +6,7 @@ */ import { Context } from 'mocha'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { FtrProviderContext } from '../api_integration/ftr_provider_context'; export function warnAndSkipTest(mochaContext: Context, log: ToolingLog) { diff --git a/x-pack/test/fleet_cypress/agent.ts b/x-pack/test/fleet_cypress/agent.ts index c0e5b2374889d..2bdecd90efdff 100644 --- a/x-pack/test/fleet_cypress/agent.ts +++ b/x-pack/test/fleet_cypress/agent.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import axios, { AxiosRequestConfig } from 'axios'; import { ChildProcess, spawn } from 'child_process'; import { getLatestVersion } from './artifact_manager'; diff --git a/x-pack/test/fleet_cypress/fleet_server.ts b/x-pack/test/fleet_cypress/fleet_server.ts index d3bb4a385185d..1f166093b0353 100644 --- a/x-pack/test/fleet_cypress/fleet_server.ts +++ b/x-pack/test/fleet_cypress/fleet_server.ts @@ -6,7 +6,7 @@ */ import { ChildProcess, spawn } from 'child_process'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import axios, { AxiosRequestConfig } from 'axios'; import { Manager } from './resource_manager'; import { getLatestVersion } from './artifact_manager'; diff --git a/x-pack/test/functional/apps/api_keys/api_keys_helpers.ts b/x-pack/test/functional/apps/api_keys/api_keys_helpers.ts index 5c9fdb65a503b..80b2795c5bb18 100644 --- a/x-pack/test/functional/apps/api_keys/api_keys_helpers.ts +++ b/x-pack/test/functional/apps/api_keys/api_keys_helpers.ts @@ -6,7 +6,7 @@ */ import { Client } from '@elastic/elasticsearch'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; export default async function clearAllApiKeys(esClient: Client, logger: ToolingLog) { const existingKeys = await esClient.security.queryApiKeys(); diff --git a/x-pack/test/functional/page_objects/log_wrapper.ts b/x-pack/test/functional/page_objects/log_wrapper.ts index cc787e14f9333..97f5a7a89369f 100644 --- a/x-pack/test/functional/page_objects/log_wrapper.ts +++ b/x-pack/test/functional/page_objects/log_wrapper.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; /** * Wraps the specified object instance with debug log statements of all method calls. diff --git a/x-pack/test/functional_synthetics/helpers.ts b/x-pack/test/functional_synthetics/helpers.ts index 959827b7490a5..8635609cf35d9 100644 --- a/x-pack/test/functional_synthetics/helpers.ts +++ b/x-pack/test/functional_synthetics/helpers.ts @@ -6,7 +6,7 @@ */ import { Context } from 'mocha'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { FtrProviderContext } from './ftr_provider_context'; export function warnAndSkipTest(mochaContext: Context, log: ToolingLog) { diff --git a/x-pack/test/lists_api_integration/utils.ts b/x-pack/test/lists_api_integration/utils.ts index 7ea7cfcf4b5cd..9407dabcf2763 100644 --- a/x-pack/test/lists_api_integration/utils.ts +++ b/x-pack/test/lists_api_integration/utils.ts @@ -21,7 +21,7 @@ import { LIST_INDEX, LIST_ITEM_URL, } from '@kbn/securitysolution-list-constants'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { getImportListItemAsBuffer } from '@kbn/lists-plugin/common/schemas/request/import_list_item_schema.mock'; import { countDownTest } from '../detection_engine_api_integration/utils'; diff --git a/x-pack/test/osquery_cypress/agent.ts b/x-pack/test/osquery_cypress/agent.ts index c0e5b2374889d..2bdecd90efdff 100644 --- a/x-pack/test/osquery_cypress/agent.ts +++ b/x-pack/test/osquery_cypress/agent.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import axios, { AxiosRequestConfig } from 'axios'; import { ChildProcess, spawn } from 'child_process'; import { getLatestVersion } from './artifact_manager'; diff --git a/x-pack/test/osquery_cypress/fleet_server.ts b/x-pack/test/osquery_cypress/fleet_server.ts index b64b1871637bc..77ec56cf20960 100644 --- a/x-pack/test/osquery_cypress/fleet_server.ts +++ b/x-pack/test/osquery_cypress/fleet_server.ts @@ -6,7 +6,7 @@ */ import { ChildProcess, spawn } from 'child_process'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import axios, { AxiosRequestConfig } from 'axios'; import { Manager } from './resource_manager'; import { getLatestVersion } from './artifact_manager'; diff --git a/x-pack/test/saved_objects_field_count/runner.ts b/x-pack/test/saved_objects_field_count/runner.ts index e6b53f2a2f399..b88f2129ba64d 100644 --- a/x-pack/test/saved_objects_field_count/runner.ts +++ b/x-pack/test/saved_objects_field_count/runner.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { CiStatsReporter } from '@kbn/dev-utils'; +import { CiStatsReporter } from '@kbn/ci-stats-reporter'; import { FtrProviderContext } from '../functional/ftr_provider_context'; const IGNORED_FIELDS = [ diff --git a/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js index af56540841403..9b768ab61baec 100644 --- a/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js +++ b/x-pack/test/stack_functional_integration/configs/config.stack_functional_integration_base.js @@ -7,7 +7,7 @@ import { resolve } from 'path'; import consumeState from './consume_state'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { REPO_ROOT } from '@kbn/utils'; import chalk from 'chalk'; import { esTestConfig, kbnTestConfig } from '@kbn/test'; diff --git a/x-pack/test/ui_capabilities/common/services/features.ts b/x-pack/test/ui_capabilities/common/services/features.ts index de425b6d166b7..e1c79059e6ecb 100644 --- a/x-pack/test/ui_capabilities/common/services/features.ts +++ b/x-pack/test/ui_capabilities/common/services/features.ts @@ -8,7 +8,7 @@ import axios, { AxiosInstance } from 'axios'; import { format as formatUrl } from 'url'; import util from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { FtrProviderContext } from '../ftr_provider_context'; import { Features } from '../features'; diff --git a/x-pack/test/ui_capabilities/common/services/ui_capabilities.ts b/x-pack/test/ui_capabilities/common/services/ui_capabilities.ts index 2c8db86386bac..3c3febcc30686 100644 --- a/x-pack/test/ui_capabilities/common/services/ui_capabilities.ts +++ b/x-pack/test/ui_capabilities/common/services/ui_capabilities.ts @@ -9,7 +9,7 @@ import axios, { AxiosInstance } from 'axios'; import type { Capabilities as UICapabilities } from '@kbn/core/types'; import { format as formatUrl } from 'url'; import util from 'util'; -import { ToolingLog } from '@kbn/dev-utils'; +import { ToolingLog } from '@kbn/tooling-log'; import { FtrProviderContext } from '../ftr_provider_context'; import { FeaturesService, FeaturesProvider } from './features'; diff --git a/yarn.lock b/yarn.lock index d16c551676039..6875a7cd14062 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2960,6 +2960,18 @@ version "0.0.0" uid "" +"@kbn/ci-stats-client@link:bazel-bin/packages/kbn-ci-stats-client": + version "0.0.0" + uid "" + +"@kbn/ci-stats-core@link:bazel-bin/packages/kbn-ci-stats-core": + version "0.0.0" + uid "" + +"@kbn/ci-stats-reporter@link:bazel-bin/packages/kbn-ci-stats-reporter": + version "0.0.0" + uid "" + "@kbn/cli-dev-mode@link:bazel-bin/packages/kbn-cli-dev-mode": version "0.0.0" uid "" @@ -3056,6 +3068,10 @@ version "0.0.0" uid "" +"@kbn/jest-serializers@link:bazel-bin/packages/kbn-jest-serializers": + version "0.0.0" + uid "" + "@kbn/logging-mocks@link:bazel-bin/packages/kbn-logging-mocks": version "0.0.0" uid "" @@ -3184,6 +3200,10 @@ version "0.0.0" uid "" +"@kbn/sort-package-json@link:bazel-bin/packages/kbn-sort-package-json": + version "0.0.0" + uid "" + "@kbn/spec-to-console@link:bazel-bin/packages/kbn-spec-to-console": version "0.0.0" uid "" @@ -3192,6 +3212,10 @@ version "0.0.0" uid "" +"@kbn/stdio-dev-helpers@link:bazel-bin/packages/kbn-stdio-dev-helpers": + version "0.0.0" + uid "" + "@kbn/storybook@link:bazel-bin/packages/kbn-storybook": version "0.0.0" uid "" @@ -3224,6 +3248,10 @@ version "0.0.0" uid "" +"@kbn/tooling-log@link:bazel-bin/packages/kbn-tooling-log": + version "0.0.0" + uid "" + "@kbn/type-summarizer@link:bazel-bin/packages/kbn-type-summarizer": version "0.0.0" uid "" @@ -6008,6 +6036,18 @@ version "0.0.0" uid "" +"@types/kbn__ci-stats-client@link:bazel-bin/packages/kbn-ci-stats-client/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__ci-stats-core@link:bazel-bin/packages/kbn-ci-stats-core/npm_module_types": + version "0.0.0" + uid "" + +"@types/kbn__ci-stats-reporter@link:bazel-bin/packages/kbn-ci-stats-reporter/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__cli-dev-mode@link:bazel-bin/packages/kbn-cli-dev-mode/npm_module_types": version "0.0.0" uid "" @@ -6088,6 +6128,10 @@ version "0.0.0" uid "" +"@types/kbn__jest-serializers@link:bazel-bin/packages/kbn-jest-serializers/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__logging-mocks@link:bazel-bin/packages/kbn-logging-mocks/npm_module_types": version "0.0.0" uid "" @@ -6212,10 +6256,18 @@ version "0.0.0" uid "" +"@types/kbn__sort-package-json@link:bazel-bin/packages/kbn-sort-package-json/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__std@link:bazel-bin/packages/kbn-std/npm_module_types": version "0.0.0" uid "" +"@types/kbn__stdio-dev-helpers@link:bazel-bin/packages/kbn-stdio-dev-helpers/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__storybook@link:bazel-bin/packages/kbn-storybook/npm_module_types": version "0.0.0" uid "" @@ -6232,6 +6284,10 @@ version "0.0.0" uid "" +"@types/kbn__tooling-log@link:bazel-bin/packages/kbn-tooling-log/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__typed-react-router-config@link:bazel-bin/packages/kbn-typed-react-router-config/npm_module_types": version "0.0.0" uid "" From 30db753d91e0ec4c0df82d328fbd30290bcf9072 Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 19 Apr 2022 13:39:19 -0400 Subject: [PATCH 04/25] [8.2.1] [Session view] Add loading state for session view when fetching events and alerts (#130516) * Add loading state for session view when fetching events and alerts * Move section loading component and add tests * Remove unneeded styles --- .../components/session_view/index.test.tsx | 24 ++++++++++++++++--- .../public/components/session_view/index.tsx | 24 ++++++++++--------- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/x-pack/plugins/session_view/public/components/session_view/index.test.tsx b/x-pack/plugins/session_view/public/components/session_view/index.test.tsx index 262de5aba210e..f51bdf16c6e56 100644 --- a/x-pack/plugins/session_view/public/components/session_view/index.test.tsx +++ b/x-pack/plugins/session_view/public/components/session_view/index.test.tsx @@ -35,6 +35,24 @@ describe('SessionView component', () => { }); }); + it('should show loading state while retrieving empty data and hide it when settled', async () => { + let releaseApiResponse: (value?: unknown) => void; + + // make the request wait + mockedApi.mockReturnValue(new Promise((resolve) => (releaseApiResponse = resolve))); + render(); + await waitForApiCall(); + + // see if loader is present + expect(renderResult.getByTestId('sectionLoading')).toBeTruthy(); + + // release the request + releaseApiResponse!(mockedApi); + + // check the loader is gone + await waitForElementToBeRemoved(renderResult.getByTestId('sectionLoading')); + }); + it('should show the Empty message', async () => { render(); await waitForApiCall(); @@ -55,7 +73,7 @@ describe('SessionView component', () => { mockedApi.mockResolvedValue(sessionViewProcessEventsMock); }); - it('should show loading indicator while retrieving data and hide it when it gets it', async () => { + it('should show loading state while retrieving data and hide it when settled', async () => { let releaseApiResponse: (value?: unknown) => void; // make the request wait @@ -64,13 +82,13 @@ describe('SessionView component', () => { await waitForApiCall(); // see if loader is present - expect(renderResult.getByText('Loading session…')).toBeTruthy(); + expect(renderResult.getByTestId('sectionLoading')).toBeTruthy(); // release the request releaseApiResponse!(mockedApi); // check the loader is gone - await waitForElementToBeRemoved(renderResult.getByText('Loading session…')); + await waitForElementToBeRemoved(renderResult.getByTestId('sectionLoading')); }); it('should display the search bar', async () => { diff --git a/x-pack/plugins/session_view/public/components/session_view/index.tsx b/x-pack/plugins/session_view/public/components/session_view/index.tsx index fee4a67c746fc..f007a595141e7 100644 --- a/x-pack/plugins/session_view/public/components/session_view/index.tsx +++ b/x-pack/plugins/session_view/public/components/session_view/index.tsx @@ -115,7 +115,7 @@ export const SessionView = ({ const hasData = alerts && data && data.pages?.[0].events.length > 0; const hasError = error || alertsError; - const renderIsLoading = (isFetching || alertsFetching) && !data; + const renderIsLoading = (isFetching || alertsFetching) && !(data && alerts); const renderDetails = isDetailOpen && selectedProcess; const { data: newUpdatedAlertsStatus } = useFetchAlertStatus( updatedAlertsStatus, @@ -154,7 +154,18 @@ export const SessionView = ({ [setDisplayOptions] ); - if (!isFetching && !hasData) { + if (renderIsLoading) { + return ( + + + + ); + } + + if (!hasData) { return ( - {renderIsLoading && ( - - - - )} - {hasError && ( Date: Tue, 19 Apr 2022 22:40:38 +0500 Subject: [PATCH 05/25] Fix failing test: Jest Tests.src/plugins/charts/public/services/active_cursor (#130531) * Fix failing test: Jest Tests.src/plugins/charts/public/services/active_cursor * Update use_active_cursor.test.ts --- .../active_cursor/use_active_cursor.test.ts | 116 ++++++++---------- 1 file changed, 53 insertions(+), 63 deletions(-) diff --git a/src/plugins/charts/public/services/active_cursor/use_active_cursor.test.ts b/src/plugins/charts/public/services/active_cursor/use_active_cursor.test.ts index 4cc5e747dcef6..fada0ffa459c7 100644 --- a/src/plugins/charts/public/services/active_cursor/use_active_cursor.test.ts +++ b/src/plugins/charts/public/services/active_cursor/use_active_cursor.test.ts @@ -5,79 +5,64 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ + +import { TestScheduler } from 'rxjs/testing'; import { renderHook } from '@testing-library/react-hooks'; +import type { Chart, PointerEvent } from '@elastic/charts'; +import type { Datatable } from '@kbn/expressions-plugin/public'; import type { RefObject } from 'react'; -import { ActiveCursor } from './active_cursor'; +import type { ActiveCursor } from './active_cursor'; import { useActiveCursor } from './use_active_cursor'; import type { ActiveCursorSyncOption, ActiveCursorPayload } from './types'; -import type { Chart, PointerEvent } from '@elastic/charts'; -import type { Datatable } from '@kbn/expressions-plugin/public'; -// FLAKY: https://github.com/elastic/kibana/issues/130177 -describe.skip('useActiveCursor', () => { - let cursor: ActiveCursorPayload['cursor']; - let dispatchExternalPointerEvent: jest.Mock; +/** @internal **/ +type DispatchExternalPointerEventFn = (pointerEvent: PointerEvent) => void; + +describe('useActiveCursor', () => { + let testScheduler: TestScheduler; - const act = ( + beforeEach(() => { + testScheduler = new TestScheduler((actual, expected) => expect(actual).toEqual(expected)); + }); + + const act = async ( syncOption: ActiveCursorSyncOption, - events: Array>, - eventsTimeout = 1 - ) => - new Promise(async (resolve, reject) => { - try { - const activeCursor = new ActiveCursor(); - let allEventsExecuted = false; - activeCursor.setup(); - dispatchExternalPointerEvent.mockImplementation((pointerEvent) => { - if (allEventsExecuted) { - resolve(pointerEvent); - } - }); + events: Record> + ): Promise<{ dispatchExternalPointerEvent: DispatchExternalPointerEventFn }> => + new Promise((res) => { + testScheduler.run(({ cold }) => { + const marble = `${Object.keys(events).join(`-`)} |`; + const activeCursor$ = cold(marble, events); + const dispatchExternalPointerEvent: DispatchExternalPointerEventFn = jest.fn(); + renderHook(() => useActiveCursor( - activeCursor, + { + activeCursor$, + } as unknown as ActiveCursor, { current: { - dispatchExternalPointerEvent: dispatchExternalPointerEvent as ( - pointerEvent: PointerEvent - ) => void, + dispatchExternalPointerEvent, }, } as RefObject, { ...syncOption, debounce: syncOption.debounce ?? 1 } ) ); - for (const e of events) { - await new Promise((eventResolve) => - setTimeout(() => { - if (e === events[events.length - 1]) { - allEventsExecuted = true; - } - - activeCursor.activeCursor$!.next({ - cursor, - ...e, - }); - eventResolve(null); - }, eventsTimeout) - ); - } - } catch (error) { - reject(error); - } + activeCursor$.subscribe({ + complete: () => { + res({ dispatchExternalPointerEvent }); + }, + }); + }); }); - beforeEach(() => { - cursor = {} as ActiveCursorPayload['cursor']; - dispatchExternalPointerEvent = jest.fn(); - }); - test('should debounce events', async () => { - await act( + const { dispatchExternalPointerEvent } = await act( { - debounce: 50, + debounce: 5, datatables: [ { columns: [ @@ -91,25 +76,30 @@ describe.skip('useActiveCursor', () => { }, ] as Datatable[], }, - [ - { accessors: ['foo_index:foo_field'] }, - { accessors: ['foo_index:foo_field'] }, - { accessors: ['foo_index:foo_field'] }, - { accessors: ['foo_index:foo_field'] }, - ] + { + a: { accessors: ['foo_index:foo_field'] }, + b: { accessors: ['foo_index:foo_field'] }, + c: { accessors: ['foo_index:foo_field'] }, + d: { accessors: ['foo_index:foo_field'] }, + } ); expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(1); }); test('should trigger cursor pointer update (chart type: time, event type: time)', async () => { - await act({ isDateHistogram: true }, [{ isDateHistogram: true }]); + const { dispatchExternalPointerEvent } = await act( + { isDateHistogram: true }, + { + a: { isDateHistogram: true }, + } + ); expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(1); }); test('should trigger cursor pointer update (chart type: datatable - time based, event type: time)', async () => { - await act( + const { dispatchExternalPointerEvent } = await act( { datatables: [ { @@ -127,14 +117,14 @@ describe.skip('useActiveCursor', () => { }, ] as unknown as Datatable[], }, - [{ isDateHistogram: true }, { accessors: ['foo_index:foo_field'] }] + { a: { isDateHistogram: true }, b: { accessors: ['foo_index:foo_field'] } } ); expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(2); }); test('should not trigger cursor pointer update (chart type: datatable, event type: time)', async () => { - await act( + const { dispatchExternalPointerEvent } = await act( { datatables: [ { @@ -149,14 +139,14 @@ describe.skip('useActiveCursor', () => { }, ] as Datatable[], }, - [{ isDateHistogram: true }, { accessors: ['foo_index:foo_field'] }] + { a: { isDateHistogram: true }, b: { accessors: ['foo_index:foo_field'] } } ); expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(1); }); test('should works with multi datatables (intersection)', async () => { - await act( + const { dispatchExternalPointerEvent } = await act( { datatables: [ { @@ -181,7 +171,7 @@ describe.skip('useActiveCursor', () => { }, ] as Datatable[], }, - [{ accessors: ['foo_index:foo_field', 'ib:fb'] }] + { a: { accessors: ['foo_index:foo_field', 'ib:fb'] } } ); expect(dispatchExternalPointerEvent).toHaveBeenCalledTimes(1); From d8b5f37737e918a768bea7b568c6a5f328269560 Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 19 Apr 2022 12:41:44 -0500 Subject: [PATCH 06/25] fix missing testing dep for windows dev (#130579) --- .github/CODEOWNERS | 1 + packages/kbn-import-resolver/BUILD.bazel | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d7c74279d61e4..50c98651ebeea 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -226,6 +226,7 @@ /packages/kbn-es/ @elastic/kibana-operations /packages/kbn-eslint-plugin-imports/ @elastic/kibana-operations /packages/kbn-generate/ @elastic/kibana-operations +/packages/kbn-import-resolver/ @elastic/kibana-operations /packages/kbn-optimizer/ @elastic/kibana-operations /packages/kbn-plugin-discovery/ @elastic/kibana-operations /packages/kbn-pm/ @elastic/kibana-operations diff --git a/packages/kbn-import-resolver/BUILD.bazel b/packages/kbn-import-resolver/BUILD.bazel index 50e91c29d1750..f6ad73e494486 100644 --- a/packages/kbn-import-resolver/BUILD.bazel +++ b/packages/kbn-import-resolver/BUILD.bazel @@ -55,6 +55,7 @@ RUNTIME_DEPS = [ TYPES_DEPS = [ "//packages/kbn-bazel-packages:npm_module_types", "//packages/kbn-utils:npm_module_types", + "//packages/kbn-dev-utils:npm_module_types", # needed for testing, only required for windows dev "//packages/kbn-synthetic-package-map:npm_module_types", "@npm//@types/node", "@npm//@types/jest", From 2569ca6fa78b16064a8cf10ba94e3ea081297407 Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Tue, 19 Apr 2022 12:59:31 -0500 Subject: [PATCH 07/25] [Docs] Update rules list screenshots in docs (#130487) --- .../alerting/images/bulk-mute-disable.png | Bin 108908 -> 183262 bytes .../images/rules-and-connectors-ui.png | Bin 281417 -> 409376 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/user/alerting/images/bulk-mute-disable.png b/docs/user/alerting/images/bulk-mute-disable.png index 7ac4ac8fc3dafc35378eef06fc9da99ea21f9ec1..b2f9c230ffeb22df0aca1a64fd5f7a24c2d7eefc 100644 GIT binary patch literal 183262 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 literal 108908 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

wMEt8Cfl3kB?YiHXWxE|z{dV8hmQQ+K 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 diff --git a/docs/user/alerting/images/rules-and-connectors-ui.png b/docs/user/alerting/images/rules-and-connectors-ui.png index 3a464fa7cf3755864bea01f048f3411dad4021f4..b13e0ff4a2f78b7ee2f68e3986d6b10d9b595119 100644 GIT binary patch literal 409376 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 RKlhm+z45 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%0AXg)>CB&-)_N0s?thzSSGh#09x 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%0Dq^qxXdSL9lV!41vaz^GP#%--0()iO`PG&ilLK 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

c8xj$YRN4? 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

+0i$}0%XeZT`nY>smr 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%0A${uRKxF~ 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

VY5>WX8^ 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 From 26b8d280d513492286c04ca588aea658358d10d6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 19 Apr 2022 12:59:49 -0500 Subject: [PATCH 08/25] Update dependency @elastic/charts to v46.0.1 (main) (#130571) --- package.json | 2 +- renovate.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index fdd508d18c0ac..fe963c1ea76ae 100644 --- a/package.json +++ b/package.json @@ -105,7 +105,7 @@ "@elastic/apm-rum": "^5.10.2", "@elastic/apm-rum-react": "^1.3.4", "@elastic/apm-synthtrace": "link:bazel-bin/packages/elastic-apm-synthtrace", - "@elastic/charts": "46.0.0", + "@elastic/charts": "46.0.1", "@elastic/datemath": "5.0.3", "@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.2.0-canary.2", "@elastic/ems-client": "8.2.0", diff --git a/renovate.json b/renovate.json index a2efca1683dc7..4b9418311ced7 100644 --- a/renovate.json +++ b/renovate.json @@ -25,7 +25,7 @@ { "groupName": "@elastic/charts", "matchPackageNames": ["@elastic/charts"], - "reviewers": ["team:datavis"], + "reviewers": ["team:datavis", "markov00", "nickofthyme"], "matchBaseBranches": ["main"], "labels": ["release_note:skip", "auto-backport", "Team:DataVis"], "draftPR": true, diff --git a/yarn.lock b/yarn.lock index 6875a7cd14062..4af5a274d7350 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1454,10 +1454,10 @@ dependencies: object-hash "^1.3.0" -"@elastic/charts@46.0.0": - version "46.0.0" - resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-46.0.0.tgz#1714ae3d0cbbaf2d7319170577a429bd1776a190" - integrity sha512-saWKUg+UNF47sLw3WFeGppcZwB58qm3hLJzX/dwfI9dxZmba/PsYGSTuQXiGWuDQeHoMPlRXLe1lA+hD1cETzw== +"@elastic/charts@46.0.1": + version "46.0.1" + resolved "https://registry.yarnpkg.com/@elastic/charts/-/charts-46.0.1.tgz#2d3bd3de9e4f294ddd9d9969dca1dc1ed5c6f278" + integrity sha512-CWiyEHaxEk9zKOPOm4ISyAluXSxu6pqLdG+ARBu4jQx0t1ROe93vssICHq6JIrQdiMHn44pleQnWZzKzanZtDw== dependencies: "@popperjs/core" "^2.4.0" chroma-js "^2.1.0" From 67304849f558e849eff909012d523aed74c0583f Mon Sep 17 00:00:00 2001 From: Yara Tercero Date: Tue, 19 Apr 2022 11:28:12 -0700 Subject: [PATCH 09/25] [Security Solution][Codeowners] - Update threat intel ownership to platform (#130597) Update threat intel ownership to platform. --- .github/CODEOWNERS | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 50c98651ebeea..f1df9a6a46a6f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -523,9 +523,8 @@ /x-pack/plugins/security_solution/server/lib/sourcerer @elastic/security-solution-platform /packages/kbn-securitysolution* @elastic/security-solution-platform - -## Security Solution sub teams - Security Threat Intelligence -/x-pack/plugins/security_solution/public/common/components/threat_match @elastic/security-threat-intelligence +## Security Threat Intelligence - Under Security Platform +/x-pack/plugins/security_solution/public/common/components/threat_match @elastic/security-solution-platform ## Security Solution cross teams ownership /x-pack/plugins/security_solution/cypress/downloads @elastic/security-detections-response @elastic/security-threat-hunting From b352e4a6cc46654d86d373f98c05ea5499780d2a Mon Sep 17 00:00:00 2001 From: Karl Godard Date: Tue, 19 Apr 2022 11:48:28 -0700 Subject: [PATCH 10/25] [Session view] Beta Badge (#130512) * beta badge added to hosts details page (sessions tab) * beta badge added to session view, fixed toolbar styles in the process. * removed copypasta comment Co-authored-by: mitodrummer --- .../hosts/pages/details/nav_tabs.test.tsx | 19 +++++++++++++++++++ .../public/hosts/pages/details/nav_tabs.tsx | 1 + .../public/components/process_tree/styles.ts | 3 ++- .../public/components/session_view/index.tsx | 15 ++++++++++++--- .../public/components/session_view/styles.ts | 18 +++++++++++------- 5 files changed, 45 insertions(+), 11 deletions(-) diff --git a/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.test.tsx b/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.test.tsx index 8b951722439a6..351b43b8e54fc 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.test.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.test.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import { TabNavigationItemProps } from '../../../common/components/navigation/tab_navigation/types'; import { HostsTableType } from '../../store/model'; import { navTabsHostDetails } from './nav_tabs'; @@ -50,4 +51,22 @@ describe('navTabsHostDetails', () => { expect(tabs).toHaveProperty(HostsTableType.events); expect(tabs).toHaveProperty(HostsTableType.risk); }); + + test('it should display Beta badge for sessions tab only', () => { + const tabs = navTabsHostDetails({ + hasMlUserPermissions: false, + isRiskyHostsEnabled: true, + hostName: mockHostName, + }); + + Object.values(tabs).forEach((item) => { + const tab = item as TabNavigationItemProps; + + if (tab.id === HostsTableType.sessions) { + expect(tab.isBeta).toEqual(true); + } else { + expect(tab.isBeta).toEqual(undefined); + } + }); + }); }); diff --git a/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.tsx b/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.tsx index eb22e69e14c43..474bbbac7271e 100644 --- a/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.tsx +++ b/x-pack/plugins/security_solution/public/hosts/pages/details/nav_tabs.tsx @@ -67,6 +67,7 @@ export const navTabsHostDetails = ({ name: i18n.NAVIGATION_SESSIONS_TITLE, href: getTabsOnHostDetailsUrl(hostName, HostsTableType.sessions), disabled: false, + isBeta: true, }, }; diff --git a/x-pack/plugins/session_view/public/components/process_tree/styles.ts b/x-pack/plugins/session_view/public/components/process_tree/styles.ts index ed868b7203ccd..490829cad440b 100644 --- a/x-pack/plugins/session_view/public/components/process_tree/styles.ts +++ b/x-pack/plugins/session_view/public/components/process_tree/styles.ts @@ -8,6 +8,7 @@ import { useMemo } from 'react'; import { transparentize, useEuiTheme } from '@elastic/eui'; import { CSSObject } from '@emotion/react'; +import { euiLightVars } from '@kbn/ui-theme'; // using this temporarily until the euiTheme hook is updated to include proper hex values export const useStyles = () => { const { euiTheme } = useEuiTheme(); @@ -21,7 +22,7 @@ export const useStyles = () => { fontFamily: font.familyCode, overflow: 'auto', height: '100%', - backgroundColor: colors.lightestShade, + backgroundColor: euiLightVars.euiColorLightestShade, paddingTop: size.base, paddingLeft: size.s, }; diff --git a/x-pack/plugins/session_view/public/components/session_view/index.tsx b/x-pack/plugins/session_view/public/components/session_view/index.tsx index f007a595141e7..b1678a5265ee2 100644 --- a/x-pack/plugins/session_view/public/components/session_view/index.tsx +++ b/x-pack/plugins/session_view/public/components/session_view/index.tsx @@ -13,7 +13,9 @@ import { EuiPanel, EuiHorizontalRule, EuiFlexGroup, + EuiBetaBadge, } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import useLocalStorage from 'react-use/lib/useLocalStorage'; import { SectionLoading } from '../../shared_imports'; @@ -36,6 +38,10 @@ import { } from './hooks'; import { LOCAL_STORAGE_DISPLAY_OPTIONS_KEY } from '../../../common/constants'; +const BETA = i18n.translate('xpack.sessionView.beta', { + defaultMessage: 'Beta', +}); + /** * The main wrapper component for the session view. */ @@ -193,7 +199,10 @@ export const SessionView = ({ <>

- + + + + - + - + { const { euiTheme } = useEuiTheme(); const cached = useMemo(() => { - const { border, colors } = euiTheme; + const { border, colors, size } = euiTheme; // 118px = Session View Toolbar height + Close Session button height + spacing margin at the bottom const sessionView: CSSObject = { @@ -46,11 +47,9 @@ export const useStyles = ({ height = 500, isFullScreen }: StylesDeps) => { }; const searchBar: CSSObject = { position: 'relative', - margin: `${euiTheme.size.m} ${euiTheme.size.xs}`, - }; - - const buttonsEyeDetail: CSSObject = { - margin: `${euiTheme.size.m} ${euiTheme.size.xs}`, + input: { + backgroundColor: colors.emptyShade, + }, }; const sessionViewerComponent: CSSObject = { @@ -59,6 +58,11 @@ export const useStyles = ({ height = 500, isFullScreen }: StylesDeps) => { }; const toolBar: CSSObject = { + backgroundColor: `${euiLightVars.euiFormBackgroundDisabledColor} !important`, // important used since euipanel overrides this + padding: `${size.m} ${size.base}`, + }; + + const betaBadge: CSSObject = { backgroundColor: `${colors.emptyShade}`, }; @@ -68,9 +72,9 @@ export const useStyles = ({ height = 500, isFullScreen }: StylesDeps) => { nonGrowGroup, resizeHandle, searchBar, - buttonsEyeDetail, sessionViewerComponent, toolBar, + betaBadge, }; }, [euiTheme, isFullScreen, height]); From e3e4d11c723ffac8bfff577da594cdcbfabbd8fd Mon Sep 17 00:00:00 2001 From: Catherine Liu Date: Tue, 19 Apr 2022 11:58:18 -0700 Subject: [PATCH 11/25] Fixes embeddable factory default telemetry fn (#130522) Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> --- .../lib/embeddables/default_embeddable_factory_provider.ts | 2 +- src/plugins/embeddable/public/plugin.tsx | 2 +- src/plugins/embeddable/server/plugin.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts b/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts index ca4a391d3b860..17103bc8783ff 100644 --- a/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts +++ b/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts @@ -40,7 +40,7 @@ export const defaultEmbeddableFactoryProvider = < getDescription: def.getDescription ? def.getDescription.bind(def) : () => '', getIconType: def.getIconType ? def.getIconType.bind(def) : () => 'empty', savedObjectMetaData: def.savedObjectMetaData, - telemetry: def.telemetry || (() => ({})), + telemetry: def.telemetry || ((state, stats) => stats), inject: def.inject || ((state: EmbeddableStateWithType) => state), extract: def.extract || ((state: EmbeddableStateWithType) => ({ state, references: [] })), migrations: def.migrations || {}, diff --git a/src/plugins/embeddable/public/plugin.tsx b/src/plugins/embeddable/public/plugin.tsx index 750e10d60dfbb..fe0e93bdc95b6 100644 --- a/src/plugins/embeddable/public/plugin.tsx +++ b/src/plugins/embeddable/public/plugin.tsx @@ -251,7 +251,7 @@ export class EmbeddablePublicPlugin implements Plugin ({})), + telemetry: enhancement.telemetry || ((state, stats) => stats), inject: enhancement.inject || identity, extract: enhancement.extract || diff --git a/src/plugins/embeddable/server/plugin.ts b/src/plugins/embeddable/server/plugin.ts index 10bc1965fab5c..51fa1edb2c634 100644 --- a/src/plugins/embeddable/server/plugin.ts +++ b/src/plugins/embeddable/server/plugin.ts @@ -94,7 +94,7 @@ export class EmbeddableServerPlugin implements Plugin ({})), + telemetry: enhancement.telemetry || ((state, stats) => stats), inject: enhancement.inject || identity, extract: enhancement.extract || @@ -127,7 +127,7 @@ export class EmbeddableServerPlugin implements Plugin ({})), + telemetry: factory.telemetry || ((state, stats) => stats), inject: factory.inject || identity, extract: factory.extract || ((state: EmbeddableStateWithType) => ({ state, references: [] })), migrations: factory.migrations || {}, From 2a7b219fbb5ee0b3791066b20dc48136c881678f Mon Sep 17 00:00:00 2001 From: Jonathan Budzenski Date: Tue, 19 Apr 2022 15:06:48 -0500 Subject: [PATCH 12/25] [cft] Bump Kibana memory to 2GB (#130600) When https://github.com/elastic/kibana/pull/130020 is merged reporting will be disabled on 1GB Kibana instances. This bumps our CI deployed instances to 2GB to support manual and automated testing of reporting. --- .buildkite/scripts/steps/cloud/deploy.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.buildkite/scripts/steps/cloud/deploy.json b/.buildkite/scripts/steps/cloud/deploy.json index 62edb7b6a11c9..c43294a42a83b 100644 --- a/.buildkite/scripts/steps/cloud/deploy.json +++ b/.buildkite/scripts/steps/cloud/deploy.json @@ -207,7 +207,7 @@ "zone_count": 1, "size": { "resource": "memory", - "value": 1024 + "value": 2048 } } ], From 1264fc92039f4970f65e8a5babab02cc8be84de8 Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 19 Apr 2022 15:11:12 -0500 Subject: [PATCH 13/25] [jest/configs] fix checks for nested packages (#130583) --- .../kbn-bazel-packages/src/bazel_package_dirs.ts | 2 +- packages/kbn-test/src/jest/configs/jest_configs.ts | 3 ++- packages/shared-ux/jest.config.js | 13 ------------- 3 files changed, 3 insertions(+), 15 deletions(-) delete mode 100644 packages/shared-ux/jest.config.js diff --git a/packages/kbn-bazel-packages/src/bazel_package_dirs.ts b/packages/kbn-bazel-packages/src/bazel_package_dirs.ts index 985793afdee8a..7864c88a9a327 100644 --- a/packages/kbn-bazel-packages/src/bazel_package_dirs.ts +++ b/packages/kbn-bazel-packages/src/bazel_package_dirs.ts @@ -19,7 +19,7 @@ import { REPO_ROOT } from '@kbn/utils'; * eg. src/vis_editors => would find a package at src/vis_editors/foo/package.json * src/vis_editors/* => would find a package at src/vis_editors/foo/bar/package.json */ -export const BAZEL_PACKAGE_DIRS = ['packages', 'packages/shared-ux', 'packages/shared-ux/*']; +export const BAZEL_PACKAGE_DIRS = ['packages', 'packages/shared-ux/*']; /** * Resolve all the BAZEL_PACKAGE_DIRS to absolute paths diff --git a/packages/kbn-test/src/jest/configs/jest_configs.ts b/packages/kbn-test/src/jest/configs/jest_configs.ts index a2a55d4a1b649..39b284854826f 100644 --- a/packages/kbn-test/src/jest/configs/jest_configs.ts +++ b/packages/kbn-test/src/jest/configs/jest_configs.ts @@ -24,7 +24,8 @@ export class JestConfigs { constructor(cwd: string, roots: string[]) { this.cwd = cwd; - this.roots = roots; + // sort roots by length so when we use `file.startsWith()` we will find the most specific root first + this.roots = roots.slice().sort((a, b) => b.length - a.length); } async files(type: 'unit' | 'integration') { diff --git a/packages/shared-ux/jest.config.js b/packages/shared-ux/jest.config.js deleted file mode 100644 index a5f7b8dee5a71..0000000000000 --- a/packages/shared-ux/jest.config.js +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -module.exports = { - preset: '@kbn/test', - rootDir: '../..', - roots: ['/packages/shared-ux'], -}; From 0541d2c9a5bea27867abb1c1f51e375ac4159ee7 Mon Sep 17 00:00:00 2001 From: Brian Seeders Date: Tue, 19 Apr 2022 16:43:51 -0400 Subject: [PATCH 14/25] [CI] Move apps functional tests from ciGroup1 to ciGroup28 (#130595) --- x-pack/test/functional/apps/monitoring/index.js | 2 +- x-pack/test/functional/apps/rollup_job/index.js | 2 +- x-pack/test/functional/apps/watcher/index.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x-pack/test/functional/apps/monitoring/index.js b/x-pack/test/functional/apps/monitoring/index.js index b62e4e750518f..b8f6f223092f6 100644 --- a/x-pack/test/functional/apps/monitoring/index.js +++ b/x-pack/test/functional/apps/monitoring/index.js @@ -7,7 +7,7 @@ export default function ({ loadTestFile }) { describe('Monitoring app', function () { - this.tags('ciGroup1'); + this.tags('ciGroup28'); loadTestFile(require.resolve('./feature_controls')); loadTestFile(require.resolve('./cluster/list')); diff --git a/x-pack/test/functional/apps/rollup_job/index.js b/x-pack/test/functional/apps/rollup_job/index.js index cda5e56095b20..8fa9cd6f7aa72 100644 --- a/x-pack/test/functional/apps/rollup_job/index.js +++ b/x-pack/test/functional/apps/rollup_job/index.js @@ -7,7 +7,7 @@ export default function ({ loadTestFile }) { describe('rollup app', function () { - this.tags('ciGroup1'); + this.tags('ciGroup28'); loadTestFile(require.resolve('./rollup_jobs')); loadTestFile(require.resolve('./hybrid_index_pattern')); diff --git a/x-pack/test/functional/apps/watcher/index.js b/x-pack/test/functional/apps/watcher/index.js index db5f52d2121e8..fb39fe4aa7b29 100644 --- a/x-pack/test/functional/apps/watcher/index.js +++ b/x-pack/test/functional/apps/watcher/index.js @@ -7,7 +7,7 @@ export default function ({ loadTestFile }) { describe('watcher app', function () { - this.tags(['ciGroup1', 'includeFirefox']); + this.tags(['ciGroup28', 'includeFirefox']); loadTestFile(require.resolve('./watcher_test')); }); From 5872b5ec9dc5814542c8edb5aa59e50e2e74e292 Mon Sep 17 00:00:00 2001 From: Brian Seeders Date: Tue, 19 Apr 2022 16:44:24 -0400 Subject: [PATCH 15/25] [CI] Split dashboard feature controls tests into two cigroups (#130416) --- .buildkite/pipelines/es_snapshots/verify.yml | 2 +- .buildkite/pipelines/on_merge.yml | 2 +- .buildkite/pipelines/pull_request/base.yml | 2 +- .ci/ci_groups.yml | 1 + .../test/functional/apps/dashboard/index.ts | 35 +++++++++++-------- .../reporting/__snapshots__/download_csv.snap | 8 ++--- 6 files changed, 28 insertions(+), 22 deletions(-) diff --git a/.buildkite/pipelines/es_snapshots/verify.yml b/.buildkite/pipelines/es_snapshots/verify.yml index f41af0b4c1475..70b540f12686e 100755 --- a/.buildkite/pipelines/es_snapshots/verify.yml +++ b/.buildkite/pipelines/es_snapshots/verify.yml @@ -29,7 +29,7 @@ steps: - command: .buildkite/scripts/steps/functional/xpack_cigroup.sh label: 'Default CI Group' - parallelism: 30 + parallelism: 31 agents: queue: n2-4 depends_on: build diff --git a/.buildkite/pipelines/on_merge.yml b/.buildkite/pipelines/on_merge.yml index 9c0f8eecc05b3..8702493d9f4cf 100644 --- a/.buildkite/pipelines/on_merge.yml +++ b/.buildkite/pipelines/on_merge.yml @@ -51,7 +51,7 @@ steps: - command: .buildkite/scripts/steps/functional/xpack_cigroup.sh label: 'Default CI Group' - parallelism: 30 + parallelism: 31 agents: queue: n2-4-spot depends_on: build diff --git a/.buildkite/pipelines/pull_request/base.yml b/.buildkite/pipelines/pull_request/base.yml index 9de2e7bc6d807..658d855d86cfd 100644 --- a/.buildkite/pipelines/pull_request/base.yml +++ b/.buildkite/pipelines/pull_request/base.yml @@ -17,7 +17,7 @@ steps: - command: .buildkite/scripts/steps/functional/xpack_cigroup.sh label: 'Default CI Group' - parallelism: 30 + parallelism: 31 agents: queue: n2-4-spot-2 depends_on: build diff --git a/.ci/ci_groups.yml b/.ci/ci_groups.yml index 91ef2b2b7acb7..c3786f299d4c0 100644 --- a/.ci/ci_groups.yml +++ b/.ci/ci_groups.yml @@ -42,3 +42,4 @@ xpack: - ciGroup28 - ciGroup29 - ciGroup30 + - ciGroup31 diff --git a/x-pack/test/functional/apps/dashboard/index.ts b/x-pack/test/functional/apps/dashboard/index.ts index 4aa379ac19dc7..baf37ff56bd80 100644 --- a/x-pack/test/functional/apps/dashboard/index.ts +++ b/x-pack/test/functional/apps/dashboard/index.ts @@ -9,22 +9,27 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('dashboard', function () { - this.tags('ciGroup19'); + describe('', function () { + this.tags('ciGroup19'); + loadTestFile(require.resolve('./feature_controls')); + loadTestFile(require.resolve('./preserve_url')); + loadTestFile(require.resolve('./reporting')); + loadTestFile(require.resolve('./drilldowns')); + }); - loadTestFile(require.resolve('./feature_controls')); - loadTestFile(require.resolve('./preserve_url')); - loadTestFile(require.resolve('./reporting')); - loadTestFile(require.resolve('./drilldowns')); - loadTestFile(require.resolve('./sync_colors')); - loadTestFile(require.resolve('./_async_dashboard')); - loadTestFile(require.resolve('./dashboard_tagging')); - loadTestFile(require.resolve('./dashboard_lens_by_value')); - loadTestFile(require.resolve('./dashboard_maps_by_value')); - loadTestFile(require.resolve('./panel_titles')); + describe('', function () { + this.tags('ciGroup31'); + loadTestFile(require.resolve('./sync_colors')); + loadTestFile(require.resolve('./_async_dashboard')); + loadTestFile(require.resolve('./dashboard_tagging')); + loadTestFile(require.resolve('./dashboard_lens_by_value')); + loadTestFile(require.resolve('./dashboard_maps_by_value')); + loadTestFile(require.resolve('./panel_titles')); - loadTestFile(require.resolve('./migration_smoke_tests/lens_migration_smoke_test')); - loadTestFile(require.resolve('./migration_smoke_tests/controls_migration_smoke_test')); - loadTestFile(require.resolve('./migration_smoke_tests/visualize_migration_smoke_test')); - loadTestFile(require.resolve('./migration_smoke_tests/tsvb_migration_smoke_test')); + loadTestFile(require.resolve('./migration_smoke_tests/lens_migration_smoke_test')); + loadTestFile(require.resolve('./migration_smoke_tests/controls_migration_smoke_test')); + loadTestFile(require.resolve('./migration_smoke_tests/visualize_migration_smoke_test')); + loadTestFile(require.resolve('./migration_smoke_tests/tsvb_migration_smoke_test')); + }); }); } diff --git a/x-pack/test/functional/apps/dashboard/reporting/__snapshots__/download_csv.snap b/x-pack/test/functional/apps/dashboard/reporting/__snapshots__/download_csv.snap index e6b31be13861d..d524543183a3f 100644 --- a/x-pack/test/functional/apps/dashboard/reporting/__snapshots__/download_csv.snap +++ b/x-pack/test/functional/apps/dashboard/reporting/__snapshots__/download_csv.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`dashboard Reporting Download CSV Default Saved Search Data Download CSV export of a saved search panel 1`] = ` +exports[`dashboard Reporting Download CSV Default Saved Search Data Download CSV export of a saved search panel 1`] = ` "\\"order_date\\",category,currency,\\"customer_id\\",\\"order_id\\",\\"day_of_week_i\\",\\"products.created_on\\",sku \\"Jun 22, 2019 @ 00:00:00.000\\",\\"Men's Clothing, Men's Shoes\\",EUR,23,564670,6,\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"ZO0531205312, ZO0684706847\\" \\"Jun 22, 2019 @ 00:00:00.000\\",\\"Women's Clothing\\",EUR,44,564710,6,\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"ZO0263402634, ZO0499404994\\" @@ -460,7 +460,7 @@ exports[`dashboard Reporting Download CSV Default Saved Search Data Download CSV " `; -exports[`dashboard Reporting Download CSV Default Saved Search Data Downloads a filtered CSV export of a saved search panel 1`] = ` +exports[`dashboard Reporting Download CSV Default Saved Search Data Downloads a filtered CSV export of a saved search panel 1`] = ` "\\"order_date\\",category,currency,\\"customer_id\\",\\"order_id\\",\\"day_of_week_i\\",\\"products.created_on\\",sku \\"Jun 22, 2019 @ 00:00:00.000\\",\\"Men's Clothing, Men's Shoes\\",EUR,23,564670,6,\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"ZO0531205312, ZO0684706847\\" \\"Jun 22, 2019 @ 00:00:00.000\\",\\"Men's Shoes, Men's Clothing\\",EUR,52,564513,6,\\"Dec 11, 2016 @ 00:00:00.000, Dec 11, 2016 @ 00:00:00.000\\",\\"ZO0390003900, ZO0287902879\\" @@ -562,13 +562,13 @@ exports[`dashboard Reporting Download CSV Default Saved Search Data Downloads a " `; -exports[`dashboard Reporting Download CSV Field Formatters and Scripted Fields Download CSV export of a saved search panel 1`] = ` +exports[`dashboard Reporting Download CSV Field Formatters and Scripted Fields Download CSV export of a saved search panel 1`] = ` "date,\\"_id\\",name,gender,value,year,\\"years_ago\\",\\"date_informal\\" \\"Jan 1, 1982 @ 00:00:00.000\\",\\"1982-Fethany-F\\",Fethany,F,780,1982,\\"37.00000000000000000000\\",\\"Jan 1st 82\\" " `; -exports[`dashboard Reporting Download CSV Filtered Saved Search Downloads filtered Discover saved search report 1`] = ` +exports[`dashboard Reporting Download CSV Filtered Saved Search Downloads filtered Discover saved search report 1`] = ` "\\"order_date\\",category,\\"customer_full_name\\",\\"taxful_total_price\\",currency \\"Jun 25, 2019 @ 00:00:00.000\\",\\"Women's Accessories\\",\\"Betty Reese\\",\\"22.984\\",EUR \\"Jun 25, 2019 @ 00:00:00.000\\",\\"Women's Accessories, Women's Clothing\\",\\"Betty Brewer\\",\\"28.984\\",EUR From cde42887d347de4787fbd951f5d23b9779687203 Mon Sep 17 00:00:00 2001 From: Joe Portner <5295965+jportner@users.noreply.github.com> Date: Tue, 19 Apr 2022 16:50:33 -0400 Subject: [PATCH 16/25] Change updateObjectsSpaces API to prevent multiple objects w/ same origin (#128269) --- ...-public.savedobjectreferencewithcontext.md | 2 + ...avedobjectreferencewithcontext.originid.md | 13 ++ ...cewithcontext.spaceswithmatchingorigins.md | 13 ++ ...-server.savedobjectreferencewithcontext.md | 2 + ...avedobjectreferencewithcontext.originid.md | 13 ++ ...cewithcontext.spaceswithmatchingorigins.md | 13 ++ src/core/public/public.api.md | 2 + ...ct_multi_namespace_references.test.mock.ts | 9 ++ ...collect_multi_namespace_references.test.ts | 88 +++++++++- .../lib/collect_multi_namespace_references.ts | 42 +++-- .../lib/find_shared_origin_objects.test.ts | 153 ++++++++++++++++++ .../service/lib/find_shared_origin_objects.ts | 92 +++++++++++ src/core/server/server.api.md | 2 + .../copy_saved_objects_to_space_action.tsx | 2 +- .../share_saved_objects_to_space_action.tsx | 4 +- ...ecure_saved_objects_client_wrapper.test.ts | 39 ++++- .../secure_saved_objects_client_wrapper.ts | 23 ++- .../copy_to_space_flyout_internal.tsx | 2 +- .../components/selectable_spaces_control.tsx | 41 ++++- .../components/share_mode_control.tsx | 47 ++++-- .../share_to_space_flyout_internal.tsx | 41 ++++- .../components/share_to_space_form.tsx | 3 + .../saved_objects/spaces/data.json | 38 +++++ .../common/suites/delete.ts | 8 +- .../common/suites/get_shareable_references.ts | 21 ++- 25 files changed, 659 insertions(+), 54 deletions(-) create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md create mode 100644 docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md create mode 100644 docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md create mode 100644 src/core/server/saved_objects/service/lib/find_shared_origin_objects.test.ts create mode 100644 src/core/server/saved_objects/service/lib/find_shared_origin_objects.ts diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md index 39e14607d861f..2b43bafbede5c 100644 --- a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.md @@ -19,7 +19,9 @@ export interface SavedObjectReferenceWithContext | [id](./kibana-plugin-core-public.savedobjectreferencewithcontext.id.md) | string | The ID of the referenced object | | [inboundReferences](./kibana-plugin-core-public.savedobjectreferencewithcontext.inboundreferences.md) | Array<{ type: string; id: string; name: string; }> | References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation | | [isMissing?](./kibana-plugin-core-public.savedobjectreferencewithcontext.ismissing.md) | boolean | (Optional) Whether or not this object or reference is missing | +| [originId?](./kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md) | string | (Optional) The origin ID of the referenced object (if it has one) | | [spaces](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaces.md) | string\[\] | The space(s) that the referenced object exists in | | [spacesWithMatchingAliases?](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) | string\[\] | (Optional) The space(s) that legacy URL aliases matching this type/id exist in | +| [spacesWithMatchingOrigins?](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md) | string\[\] | (Optional) The space(s) that objects matching this origin exist in (including this one) | | [type](./kibana-plugin-core-public.savedobjectreferencewithcontext.type.md) | string | The type of the referenced object | diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md new file mode 100644 index 0000000000000..418041ea5df60 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [originId](./kibana-plugin-core-public.savedobjectreferencewithcontext.originid.md) + +## SavedObjectReferenceWithContext.originId property + +The origin ID of the referenced object (if it has one) + +Signature: + +```typescript +originId?: string; +``` diff --git a/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md new file mode 100644 index 0000000000000..88a7ebb5f2234 --- /dev/null +++ b/docs/development/core/public/kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-public.savedobjectreferencewithcontext.md) > [spacesWithMatchingOrigins](./kibana-plugin-core-public.savedobjectreferencewithcontext.spaceswithmatchingorigins.md) + +## SavedObjectReferenceWithContext.spacesWithMatchingOrigins property + +The space(s) that objects matching this origin exist in (including this one) + +Signature: + +```typescript +spacesWithMatchingOrigins?: string[]; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md index 8cdfbb4fde480..79dd7a40019ec 100644 --- a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.md @@ -19,7 +19,9 @@ export interface SavedObjectReferenceWithContext | [id](./kibana-plugin-core-server.savedobjectreferencewithcontext.id.md) | string | The ID of the referenced object | | [inboundReferences](./kibana-plugin-core-server.savedobjectreferencewithcontext.inboundreferences.md) | Array<{ type: string; id: string; name: string; }> | References to this object; note that this does not contain \_all inbound references everywhere for this object\_, it only contains inbound references for the scope of this operation | | [isMissing?](./kibana-plugin-core-server.savedobjectreferencewithcontext.ismissing.md) | boolean | (Optional) Whether or not this object or reference is missing | +| [originId?](./kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md) | string | (Optional) The origin ID of the referenced object (if it has one) | | [spaces](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaces.md) | string\[\] | The space(s) that the referenced object exists in | | [spacesWithMatchingAliases?](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingaliases.md) | string\[\] | (Optional) The space(s) that legacy URL aliases matching this type/id exist in | +| [spacesWithMatchingOrigins?](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md) | string\[\] | (Optional) The space(s) that objects matching this origin exist in (including this one) | | [type](./kibana-plugin-core-server.savedobjectreferencewithcontext.type.md) | string | The type of the referenced object | diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md new file mode 100644 index 0000000000000..47cac3f423647 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [originId](./kibana-plugin-core-server.savedobjectreferencewithcontext.originid.md) + +## SavedObjectReferenceWithContext.originId property + +The origin ID of the referenced object (if it has one) + +Signature: + +```typescript +originId?: string; +``` diff --git a/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md new file mode 100644 index 0000000000000..3fedce753c034 --- /dev/null +++ b/docs/development/core/server/kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [SavedObjectReferenceWithContext](./kibana-plugin-core-server.savedobjectreferencewithcontext.md) > [spacesWithMatchingOrigins](./kibana-plugin-core-server.savedobjectreferencewithcontext.spaceswithmatchingorigins.md) + +## SavedObjectReferenceWithContext.spacesWithMatchingOrigins property + +The space(s) that objects matching this origin exist in (including this one) + +Signature: + +```typescript +spacesWithMatchingOrigins?: string[]; +``` diff --git a/src/core/public/public.api.md b/src/core/public/public.api.md index ecd326190d6c1..f805f24cb05e8 100644 --- a/src/core/public/public.api.md +++ b/src/core/public/public.api.md @@ -1089,8 +1089,10 @@ export interface SavedObjectReferenceWithContext { name: string; }>; isMissing?: boolean; + originId?: string; spaces: string[]; spacesWithMatchingAliases?: string[]; + spacesWithMatchingOrigins?: string[]; type: string; } diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts index 728f3b847b631..5476f99c3b37d 100644 --- a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts +++ b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.mock.ts @@ -7,6 +7,7 @@ */ import type { findLegacyUrlAliases } from './legacy_url_aliases'; +import type { findSharedOriginObjects } from './find_shared_origin_objects'; import type * as InternalUtils from './internal_utils'; export const mockFindLegacyUrlAliases = jest.fn() as jest.MockedFunction< @@ -17,6 +18,14 @@ jest.mock('./legacy_url_aliases', () => { return { findLegacyUrlAliases: mockFindLegacyUrlAliases }; }); +export const mockFindSharedOriginObjects = jest.fn() as jest.MockedFunction< + typeof findSharedOriginObjects +>; + +jest.mock('./find_shared_origin_objects', () => { + return { findSharedOriginObjects: mockFindSharedOriginObjects }; +}); + export const mockRawDocExistsInNamespace = jest.fn() as jest.MockedFunction< typeof InternalUtils['rawDocExistsInNamespace'] >; diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts index 202b5ca4386c9..bac745995ce07 100644 --- a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts +++ b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.test.ts @@ -8,6 +8,7 @@ import { mockFindLegacyUrlAliases, + mockFindSharedOriginObjects, mockRawDocExistsInNamespace, } from './collect_multi_namespace_references.test.mock'; @@ -15,7 +16,7 @@ import { elasticsearchClientMock } from '../../../elasticsearch/client/mocks'; import { typeRegistryMock } from '../../saved_objects_type_registry.mock'; import { SavedObjectsSerializer } from '../../serialization'; import { - ALIAS_SEARCH_PER_PAGE, + ALIAS_OR_SHARED_ORIGIN_SEARCH_PER_PAGE, CollectMultiNamespaceReferencesParams, SavedObjectsCollectMultiNamespaceReferencesObject, SavedObjectsCollectMultiNamespaceReferencesOptions, @@ -35,6 +36,8 @@ const MULTI_NAMESPACE_HIDDEN_OBJ_TYPE = 'type-d'; beforeEach(() => { mockFindLegacyUrlAliases.mockReset(); mockFindLegacyUrlAliases.mockResolvedValue(new Map()); // return an empty map by default + mockFindSharedOriginObjects.mockReset(); + mockFindSharedOriginObjects.mockResolvedValue(new Map()); // return an empty map by default mockRawDocExistsInNamespace.mockReset(); mockRawDocExistsInNamespace.mockReturnValue(true); // return true by default }); @@ -82,6 +85,7 @@ describe('collectMultiNamespaceReferences', () => { function mockMgetResults( ...results: Array<{ found: boolean; + originId?: string; references?: Array<{ type: string; id: string }>; }> ) { @@ -95,6 +99,7 @@ describe('collectMultiNamespaceReferences', () => { _index: 'doesnt-matter', _source: { namespaces: SPACES, + originId: x.originId, references, }, ...VERSION_PROPS, @@ -321,7 +326,7 @@ describe('collectMultiNamespaceReferences', () => { expect(mockFindLegacyUrlAliases).toHaveBeenCalledWith( expect.anything(), [obj1, obj2, obj3], - ALIAS_SEARCH_PER_PAGE + ALIAS_OR_SHARED_ORIGIN_SEARCH_PER_PAGE ); expect(result.objects).toEqual([ { @@ -346,7 +351,7 @@ describe('collectMultiNamespaceReferences', () => { expect(mockFindLegacyUrlAliases).toHaveBeenCalledWith( expect.anything(), [obj1], - ALIAS_SEARCH_PER_PAGE + ALIAS_OR_SHARED_ORIGIN_SEARCH_PER_PAGE ); }); @@ -363,4 +368,81 @@ describe('collectMultiNamespaceReferences', () => { ); }); }); + + describe('shared origins', () => { + it('uses findSharedOriginObjects to search for objects with shared origins', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-x', originId: 'id-2' }; + const obj3 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-3' }; + const params = setup([obj1, obj2], {}); + mockMgetResults( + // results for obj1 and obj2 + { found: true, references: [obj3] }, + { found: true, originId: obj2.originId, references: [] } + ); + mockMgetResults({ found: true, references: [] }); // results for obj3 + mockFindSharedOriginObjects.mockResolvedValue( + new Map([ + [`${obj1.type}:${obj1.id}`, new Set(['space-1'])], + [`${obj2.type}:${obj2.originId}`, new Set(['*'])], + [`${obj3.type}:${obj3.id}`, new Set(['space-1', 'space-2'])], + ]) + ); + + const result = await collectMultiNamespaceReferences(params); + expect(client.mget).toHaveBeenCalledTimes(2); + expectMgetArgs(1, obj1, obj2); + expectMgetArgs(2, obj3); // obj3 is retrieved in a second cluster call + expect(mockFindSharedOriginObjects).toHaveBeenCalledTimes(1); + expect(mockFindSharedOriginObjects).toHaveBeenCalledWith( + expect.anything(), + [ + { type: obj1.type, origin: obj1.id }, + { type: obj2.type, origin: obj2.originId }, // If the found object has an `originId`, that is used instead of the object's `id`. + { type: obj3.type, origin: obj3.id }, + ], + ALIAS_OR_SHARED_ORIGIN_SEARCH_PER_PAGE + ); + expect(result.objects).toEqual([ + // Note: in a realistic scenario, `spacesWithMatchingOrigins` would be a superset of `spaces`. But for the purposes of this unit + // test, it doesn't matter if they are different. + { ...obj1, spaces: SPACES, inboundReferences: [], spacesWithMatchingOrigins: ['space-1'] }, + { ...obj2, spaces: SPACES, inboundReferences: [], spacesWithMatchingOrigins: ['*'] }, + { + ...obj3, + spaces: SPACES, + inboundReferences: [{ ...obj1, name: 'ref-name' }], + spacesWithMatchingOrigins: ['space-1', 'space-2'], + }, + ]); + }); + + it('omits objects that have an empty spaces array (the object does not exist, or we are not sure)', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const obj2 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-2' }; + const params = setup([obj1, obj2]); + mockMgetResults({ found: true }, { found: false }); // results for obj1 and obj2 + + await collectMultiNamespaceReferences(params); + expect(mockFindSharedOriginObjects).toHaveBeenCalledTimes(1); + expect(mockFindSharedOriginObjects).toHaveBeenCalledWith( + expect.anything(), + [{ type: obj1.type, origin: obj1.id }], + ALIAS_OR_SHARED_ORIGIN_SEARCH_PER_PAGE + ); + }); + + it('handles findSharedOriginObjects errors', async () => { + const obj1 = { type: MULTI_NAMESPACE_OBJ_TYPE_1, id: 'id-1' }; + const params = setup([obj1]); + mockMgetResults({ found: true }); // results for obj1 + mockFindSharedOriginObjects.mockRejectedValue( + new Error('Failed to retrieve shared origin objects: Oh no!') + ); + + await expect(() => collectMultiNamespaceReferences(params)).rejects.toThrow( + 'Failed to retrieve shared origin objects: Oh no!' + ); + }); + }); }); diff --git a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts index a404f2e9475b7..a6336a89ac6fe 100644 --- a/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts +++ b/src/core/server/saved_objects/service/lib/collect_multi_namespace_references.ts @@ -21,6 +21,7 @@ import { } from './internal_utils'; import type { CreatePointInTimeFinderFn } from './point_in_time_finder'; import type { RepositoryEsClient } from './repository_es_client'; +import { findSharedOriginObjects } from './find_shared_origin_objects'; /** * When we collect an object's outbound references, we will only go a maximum of this many levels deep before we throw an error. @@ -28,13 +29,13 @@ import type { RepositoryEsClient } from './repository_es_client'; const MAX_REFERENCE_GRAPH_DEPTH = 20; /** - * How many aliases to search for per page. This is smaller than the PointInTimeFinder's default of 1000. We specify 100 for the page count - * because this is a relatively unimportant operation, and we want to avoid blocking the Elasticsearch thread pool for longer than - * necessary. + * How many aliases or objects with shared origins to search for per page. This is smaller than the PointInTimeFinder's default of 1000. We + * specify 100 for the page count because this is a relatively unimportant operation, and we want to avoid blocking the Elasticsearch thread + * pool for longer than necessary. * * @internal */ -export const ALIAS_SEARCH_PER_PAGE = 100; +export const ALIAS_OR_SHARED_ORIGIN_SEARCH_PER_PAGE = 100; /** * An object to collect references for. It must be a multi-namespace type (in other words, the object type must be registered with the @@ -71,6 +72,8 @@ export interface SavedObjectReferenceWithContext { type: string; /** The ID of the referenced object */ id: string; + /** The origin ID of the referenced object (if it has one) */ + originId?: string; /** The space(s) that the referenced object exists in */ spaces: string[]; /** @@ -89,6 +92,8 @@ export interface SavedObjectReferenceWithContext { isMissing?: boolean; /** The space(s) that legacy URL aliases matching this type/id exist in */ spacesWithMatchingAliases?: string[]; + /** The space(s) that objects matching this origin exist in (including this one) */ + spacesWithMatchingOrigins?: string[]; } /** @@ -140,8 +145,16 @@ export async function collectMultiNamespaceReferences( }); const { type, id } = parseObjectKey(referenceKey); const object = objectMap.get(referenceKey); + const originId = object?.originId; const spaces = object?.namespaces ?? []; - return { type, id, spaces, inboundReferences, ...(object === null && { isMissing: true }) }; + return { + type, + id, + originId, + spaces, + inboundReferences, + ...(object === null && { isMissing: true }), + }; }); const objectsToFindAliasesFor = objectsWithContext @@ -150,13 +163,22 @@ export async function collectMultiNamespaceReferences( const aliasesMap = await findLegacyUrlAliases( createPointInTimeFinder, objectsToFindAliasesFor, - ALIAS_SEARCH_PER_PAGE + ALIAS_OR_SHARED_ORIGIN_SEARCH_PER_PAGE + ); + const objectOriginsToSearchFor = objectsWithContext + .filter(({ spaces }) => spaces.length !== 0) + .map(({ type, id, originId }) => ({ type, origin: originId || id })); + const originsMap = await findSharedOriginObjects( + createPointInTimeFinder, + objectOriginsToSearchFor, + ALIAS_OR_SHARED_ORIGIN_SEARCH_PER_PAGE ); const results = objectsWithContext.map((obj) => { - const key = getObjectKey(obj); - const val = aliasesMap.get(key); - const spacesWithMatchingAliases = val && Array.from(val); - return { ...obj, spacesWithMatchingAliases }; + const aliasesVal = aliasesMap.get(getObjectKey(obj)); + const spacesWithMatchingAliases = aliasesVal && Array.from(aliasesVal).sort(); + const originsVal = originsMap.get(getObjectKey({ type: obj.type, id: obj.originId || obj.id })); + const spacesWithMatchingOrigins = originsVal && Array.from(originsVal).sort(); + return { ...obj, spacesWithMatchingAliases, spacesWithMatchingOrigins }; }); return { diff --git a/src/core/server/saved_objects/service/lib/find_shared_origin_objects.test.ts b/src/core/server/saved_objects/service/lib/find_shared_origin_objects.test.ts new file mode 100644 index 0000000000000..c8e0796dea18e --- /dev/null +++ b/src/core/server/saved_objects/service/lib/find_shared_origin_objects.test.ts @@ -0,0 +1,153 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { DeeplyMockedKeys } from '@kbn/utility-types/jest'; + +import type { CreatePointInTimeFinderFn, PointInTimeFinder } from './point_in_time_finder'; +import { savedObjectsPointInTimeFinderMock } from './point_in_time_finder.mock'; +import type { ISavedObjectsRepository } from './repository'; +import { savedObjectsRepositoryMock } from './repository.mock'; +import { findSharedOriginObjects } from './find_shared_origin_objects'; + +interface MockFindResultParams { + type: string; + id: string; + originId?: string; + namespaces: string[]; +} + +describe('findSharedOriginObjects', () => { + let savedObjectsMock: jest.Mocked; + let pointInTimeFinder: DeeplyMockedKeys; + let createPointInTimeFinder: jest.MockedFunction; + + beforeEach(() => { + savedObjectsMock = savedObjectsRepositoryMock.create(); + savedObjectsMock.find.mockResolvedValue({ + pit_id: 'foo', + saved_objects: [], + // the rest of these fields don't matter but are included for type safety + total: 0, + page: 1, + per_page: 100, + }); + pointInTimeFinder = savedObjectsPointInTimeFinderMock.create({ savedObjectsMock })(); // PIT finder mock uses the actual implementation, but it doesn't need to be created with real params because the SOR is mocked too + createPointInTimeFinder = jest.fn().mockReturnValue(pointInTimeFinder); + }); + + function mockFindResults(...results: MockFindResultParams[]) { + savedObjectsMock.find.mockResolvedValueOnce({ + pit_id: 'foo', + saved_objects: results.map(({ type, id, originId, namespaces }) => ({ + type, + id, + namespaces, + ...(originId && { originId }), + attributes: {}, + references: [], + score: 0, // doesn't matter + })), + // the rest of these fields don't matter but are included for type safety + total: 0, + page: 1, + per_page: 100, + }); + } + + const obj1 = { type: 'type-1', origin: 'id-1' }; + const obj2 = { type: 'type-2', origin: 'id-2' }; + const obj3 = { type: 'type-3', origin: 'id-3' }; + const obj4 = { type: 'type-4', origin: 'id-4' }; + + it('uses the PointInTimeFinder to search for legacy URL aliases', async () => { + mockFindResults( + { type: 'type-1', id: 'id-1', namespaces: ['space-a', 'space-b'] }, + { type: 'type-1', id: 'id-x', originId: 'id-1', namespaces: ['space-b', 'space-c'] }, + { type: 'type-2', id: 'id-2', namespaces: ['*', 'space-d'] }, + { type: 'type-2', id: 'id-y', originId: 'id-2', namespaces: ['space-e'] }, + { type: 'type-3', id: 'id-3', namespaces: ['f'] }, + { type: 'type-3', id: 'id-z', originId: 'id-3', namespaces: ['*', 'space-g'] } + // no results matching obj4 + ); + + const objects = [obj1, obj2, obj3, obj4]; + const result = await findSharedOriginObjects(createPointInTimeFinder, objects); + expect(createPointInTimeFinder).toHaveBeenCalledTimes(1); + expect(createPointInTimeFinder).toHaveBeenCalledWith( + expect.objectContaining({ type: ['type-1', 'type-2', 'type-3', 'type-4'] }) // filter assertions are below + ); + const kueryFilterArgs = createPointInTimeFinder.mock.calls[0][0].filter.arguments; + expect(kueryFilterArgs).toHaveLength(8); // 2 for each object + [obj1, obj2, obj3].forEach(({ type, origin }, i) => { + expect(kueryFilterArgs[i * 2].arguments).toEqual( + expect.arrayContaining([ + { type: 'literal', value: `${type}.id` }, + { type: 'literal', value: `${type}:${origin}` }, + ]) + ); + expect(kueryFilterArgs[i * 2 + 1].arguments).toEqual( + expect.arrayContaining([ + { type: 'literal', value: `${type}.originId` }, + { type: 'literal', value: origin }, + ]) + ); + }); + expect(pointInTimeFinder.find).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.close).toHaveBeenCalledTimes(2); + expect(result).toEqual( + // This contains multiple assertions about the response: + // 1. A match's `id` is ignored if it has a defined `originId` + // 2. The `namespaces` from different matches are combined into a single set, and duplicate space IDs are filtered out + // 3. If the first match's `namespaces` array contains '*', all other space IDs are filtered out + // 4. If the last match's `namespaces` array contains '*', all other space IDs are filtered out + // 5. Objects that have no matches will not have an entry in the result map + new Map([ + ['type-1:id-1', new Set(['space-a', 'space-b', 'space-c'])], + ['type-2:id-2', new Set(['*'])], + ['type-3:id-3', new Set(['*'])], + // the result map does not contain keys for obj4 because we did not find any matches for that object + ]) + ); + }); + + it('allows perPage to be set', async () => { + const objects = [obj1, obj2, obj3]; + await findSharedOriginObjects(createPointInTimeFinder, objects, 999); + expect(createPointInTimeFinder).toHaveBeenCalledTimes(1); + expect(createPointInTimeFinder).toHaveBeenCalledWith(expect.objectContaining({ perPage: 999 })); + }); + + it('does not create a PointInTimeFinder if no objects are passed in', async () => { + await findSharedOriginObjects(createPointInTimeFinder, []); + expect(createPointInTimeFinder).not.toHaveBeenCalled(); + }); + + it('handles PointInTimeFinder.find errors', async () => { + savedObjectsMock.find.mockRejectedValue(new Error('Oh no!')); + + const objects = [obj1, obj2, obj3]; + await expect(() => findSharedOriginObjects(createPointInTimeFinder, objects)).rejects.toThrow( + 'Failed to retrieve shared origin objects: Oh no!' + ); + expect(createPointInTimeFinder).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.find).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.close).toHaveBeenCalledTimes(2); // we still close the point-in-time, even though the search failed + }); + + it('handles PointInTimeFinder.close errors', async () => { + pointInTimeFinder.close.mockRejectedValue(new Error('Oh no!')); + + const objects = [obj1, obj2, obj3]; + await expect(() => findSharedOriginObjects(createPointInTimeFinder, objects)).rejects.toThrow( + 'Failed to retrieve shared origin objects: Oh no!' + ); + expect(createPointInTimeFinder).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.find).toHaveBeenCalledTimes(1); + expect(pointInTimeFinder.close).toHaveBeenCalledTimes(2); + }); +}); diff --git a/src/core/server/saved_objects/service/lib/find_shared_origin_objects.ts b/src/core/server/saved_objects/service/lib/find_shared_origin_objects.ts new file mode 100644 index 0000000000000..229e0c6f90a66 --- /dev/null +++ b/src/core/server/saved_objects/service/lib/find_shared_origin_objects.ts @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import * as esKuery from '@kbn/es-query'; +import { getObjectKey } from './internal_utils'; +import type { CreatePointInTimeFinderFn } from './point_in_time_finder'; +import { ALL_NAMESPACES_STRING } from './utils'; + +interface ObjectOrigin { + /** The object's type. */ + type: string; + /** The object's origin is its `originId` field, or its `id` field if that is unavailable. */ + origin: string; +} + +/** + * Fetches all objects with a shared origin, returning a map of the matching aliases and what space(s) they exist in. + * + * @internal + */ +export async function findSharedOriginObjects( + createPointInTimeFinder: CreatePointInTimeFinderFn, + objects: ObjectOrigin[], + perPage?: number +) { + if (!objects.length) { + return new Map>(); + } + + const uniqueObjectTypes = objects.reduce((acc, { type }) => acc.add(type), new Set()); + const filter = createAliasKueryFilter(objects); + const finder = createPointInTimeFinder({ + type: [...uniqueObjectTypes], + perPage, + filter, + fields: ['not-a-field'], // Specify a non-existent field to avoid fetching all type-level fields (we only care about root-level fields) + namespaces: [ALL_NAMESPACES_STRING], // We need to search across all spaces to have accurate results + }); + // NOTE: this objectsMap is only used internally (not in an API that is documented for public consumption), and it contains the minimal + // amount of information to satisfy our UI needs today. We will need to change this in the future when we implement merging in #130311. + const objectsMap = new Map>(); + let error: Error | undefined; + try { + for await (const { saved_objects: savedObjects } of finder.find()) { + for (const savedObject of savedObjects) { + const { type, id, originId, namespaces = [] } = savedObject; + const key = getObjectKey({ type, id: originId || id }); + const val = objectsMap.get(key) ?? new Set(); + const filteredNamespaces = + namespaces.includes(ALL_NAMESPACES_STRING) || val.has(ALL_NAMESPACES_STRING) + ? [ALL_NAMESPACES_STRING] + : [...val, ...namespaces]; + objectsMap.set(key, new Set([...filteredNamespaces])); + } + } + } catch (e) { + error = e; + } + + try { + await finder.close(); + } catch (e) { + if (!error) { + error = e; + } + } + + if (error) { + throw new Error(`Failed to retrieve shared origin objects: ${error.message}`); + } + return objectsMap; +} + +function createAliasKueryFilter(objects: Array<{ type: string; origin: string }>) { + const { buildNode } = esKuery.nodeTypes.function; + // Note: these nodes include '.attributes' for type-level fields because these are eventually passed to `validateConvertFilterToKueryNode`, which requires it + const kueryNodes = objects + .reduce((acc, { type, origin }) => { + // Escape Kuery values to prevent parsing errors and unintended behavior (object types/IDs can contain KQL special characters/operators) + const match1 = buildNode('is', `${type}.id`, esKuery.escapeKuery(`${type}:${origin}`)); // here we are looking for the raw document `_id` field, which has a `type:` prefix + const match2 = buildNode('is', `${type}.originId`, esKuery.escapeKuery(origin)); // here we are looking for the saved object's `originId` field, which does not have a `type:` prefix + acc.push([match1, match2]); + return acc; + }, []) + .flat(); + return buildNode('or', kueryNodes); +} diff --git a/src/core/server/server.api.md b/src/core/server/server.api.md index 0a48e4dc6380a..cec9eacdce5dc 100644 --- a/src/core/server/server.api.md +++ b/src/core/server/server.api.md @@ -2052,8 +2052,10 @@ export interface SavedObjectReferenceWithContext { name: string; }>; isMissing?: boolean; + originId?: string; spaces: string[]; spacesWithMatchingAliases?: string[]; + spacesWithMatchingOrigins?: string[]; type: string; } diff --git a/src/plugins/saved_objects_management/public/services/actions/copy_saved_objects_to_space_action.tsx b/src/plugins/saved_objects_management/public/services/actions/copy_saved_objects_to_space_action.tsx index 1ba5d4a3f48b4..3d51f6e52a728 100644 --- a/src/plugins/saved_objects_management/public/services/actions/copy_saved_objects_to_space_action.tsx +++ b/src/plugins/saved_objects_management/public/services/actions/copy_saved_objects_to_space_action.tsx @@ -30,7 +30,7 @@ export class CopyToSpaceSavedObjectsManagementAction extends SavedObjectsManagem public euiAction = { name: i18n.translate('savedObjectsManagement.copyToSpace.actionTitle', { - defaultMessage: 'Copy to space', + defaultMessage: 'Copy to spaces', }), description: i18n.translate('savedObjectsManagement.copyToSpace.actionDescription', { defaultMessage: 'Make a copy of this saved object in one or more spaces', diff --git a/src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.tsx b/src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.tsx index 00b99e9327a58..cec28e07fdaf3 100644 --- a/src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.tsx +++ b/src/plugins/saved_objects_management/public/services/actions/share_saved_objects_to_space_action.tsx @@ -30,10 +30,10 @@ export class ShareToSpaceSavedObjectsManagementAction extends SavedObjectsManage public euiAction = { name: i18n.translate('savedObjectsManagement.shareToSpace.actionTitle', { - defaultMessage: 'Assign spaces', + defaultMessage: 'Share to spaces', }), description: i18n.translate('savedObjectsManagement.shareToSpace.actionDescription', { - defaultMessage: 'Change the spaces this object is assigned to', + defaultMessage: 'Share this object to one or more spaces', }), icon: 'share', type: 'icon', diff --git a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts index 45a09f9a38967..0f96beb4b5eaf 100644 --- a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts +++ b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.test.ts @@ -1457,6 +1457,8 @@ describe('#collectMultiNamespaceReferences', () => { const reqObj1 = { type: 'a', id: '1' }; const reqObj2 = { type: 'b', id: '2' }; const spaces = [spaceX, spaceY, spaceZ]; + const spacesWithMatchingAliases = [spaceX, spaceY, spaceZ]; + const spacesWithMatchingOrigins = [spaceX, spaceY, spaceZ]; // Actual object graph: // ─► obj1 (a:1) ─┬─► obj3 (c:3) ───► obj5 (c:5) ─► obj8 (c:8) ─┐ @@ -1471,9 +1473,24 @@ describe('#collectMultiNamespaceReferences', () => { // │ └───────────────────────────────────┘ // └─► obj4 (d:4) // ─► obj2 (b:2) - const obj1 = { ...reqObj1, spaces, inboundReferences: [] }; + const obj1 = { + ...reqObj1, + spaces, + inboundReferences: [], + // We include spacesWithMatchingAliases and spacesWithMatchingOrigins on this object of type 'a' (which the user is authorized to access globally) to assert that they are not redacted + spacesWithMatchingAliases, + spacesWithMatchingOrigins, + }; const obj2 = { ...reqObj2, spaces: [], inboundReferences: [] }; // non-multi-namespace types and hidden types will be returned with an empty spaces array - const obj3 = { type: 'c', id: '3', spaces, ...getInboundRefsFrom(obj1) }; + const obj3 = { + type: 'c', + id: '3', + spaces, + ...getInboundRefsFrom(obj1), + // We include spacesWithMatchingAliases and spacesWithMatchingOrigins on this object of type 'c' (which the user is partially authorized for) to assert that they are redacted + spacesWithMatchingAliases, + spacesWithMatchingOrigins, + }; const obj4 = { type: 'd', id: '4', spaces, ...getInboundRefsFrom(obj1) }; const obj5 = { type: 'c', @@ -1510,9 +1527,14 @@ describe('#collectMultiNamespaceReferences', () => { const result = await client.collectMultiNamespaceReferences([reqObj1, reqObj2], options); expect(result).toEqual({ objects: [ - obj1, // obj1's spaces array is not redacted because the user is globally authorized to access it + obj1, // obj1's spaces, spacesWithMatchingAliases, and spacesWithMatchingOrigins arrays are not redacted because the user is globally authorized to access it obj2, // obj2 has an empty spaces array (see above) - { ...obj3, spaces: [spaceX, '?', '?'] }, + { + ...obj3, + spaces: [spaceX, '?', '?'], + spacesWithMatchingAliases: [spaceX, '?', '?'], + spacesWithMatchingOrigins: [spaceX, '?', '?'], + }, { ...obj4, spaces: [], isMissing: true }, // obj4 is marked as Missing because the user was not authorized to access it obj5, // obj5's spaces array is not redacted, because it exists in All Spaces // obj7 is not included at all because the user was not authorized to access its inbound reference (obj4) @@ -1567,9 +1589,14 @@ describe('#collectMultiNamespaceReferences', () => { const result = await client.collectMultiNamespaceReferences([reqObj1, reqObj2], options); expect(result).toEqual({ objects: [ - obj1, // obj1's spaces array is not redacted because the user is globally authorized to access it + obj1, // obj1's spaces, spacesWithMatchingAliases, and spacesWithMatchingOrigins arrays are not redacted because the user is globally authorized to access it obj2, // obj2 has an empty spaces array (see above) - { ...obj3, spaces: [spaceX, spaceY, '?'] }, + { + ...obj3, + spaces: [spaceX, spaceY, '?'], + spacesWithMatchingAliases: [spaceX, spaceY, '?'], + spacesWithMatchingOrigins: [spaceX, spaceY, '?'], + }, { ...obj4, spaces: [], isMissing: true }, // obj4 is marked as Missing because the user was not authorized to access it obj5, // obj5's spaces array is not redacted, because it exists in All Spaces // obj7 is not included at all because the user was not authorized to access its inbound reference (obj4) diff --git a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts index f45563d20946e..6b4c3bf4e799c 100644 --- a/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts +++ b/x-pack/plugins/security/server/saved_objects/secure_saved_objects_client_wrapper.ts @@ -655,8 +655,12 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra const uniqueTypes = this.getUniqueObjectTypes(response.objects); const uniqueSpaces = this.getUniqueSpaces( currentSpaceId, - ...response.objects.flatMap(({ spaces, spacesWithMatchingAliases = [] }) => - spaces.concat(spacesWithMatchingAliases) + ...response.objects.flatMap( + ({ spaces, spacesWithMatchingAliases = [], spacesWithMatchingOrigins = [] }) => [ + ...spaces, + ...spacesWithMatchingAliases, + ...spacesWithMatchingOrigins, + ] ) ); @@ -770,7 +774,14 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra } const filteredAndRedactedObjects = [...filteredObjectsMap.values()].map((obj) => { - const { type, id, spaces, spacesWithMatchingAliases, inboundReferences } = obj; + const { + type, + id, + spaces, + spacesWithMatchingAliases, + spacesWithMatchingOrigins, + inboundReferences, + } = obj; // Redact the inbound references so we don't leak any info about other objects that the user is not authorized to access const redactedInboundReferences = inboundReferences.filter((inbound) => { if (inbound.type === type && inbound.id === id) { @@ -783,12 +794,18 @@ export class SecureSavedObjectsClientWrapper implements SavedObjectsClientContra const redactedSpacesWithMatchingAliases = spacesWithMatchingAliases && getRedactedSpaces(type, 'bulk_get', typeActionMap, spacesWithMatchingAliases); + const redactedSpacesWithMatchingOrigins = + spacesWithMatchingOrigins && + getRedactedSpaces(type, 'bulk_get', typeActionMap, spacesWithMatchingOrigins); return { ...obj, spaces: redactedSpaces, ...(redactedSpacesWithMatchingAliases && { spacesWithMatchingAliases: redactedSpacesWithMatchingAliases, }), + ...(redactedSpacesWithMatchingOrigins && { + spacesWithMatchingOrigins: redactedSpacesWithMatchingOrigins, + }), inboundReferences: redactedInboundReferences, }; }); diff --git a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx index ab63ceb7d6b29..b4d3ec634b8f3 100644 --- a/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx +++ b/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx @@ -259,7 +259,7 @@ export const CopyToSpaceFlyoutInternal = (props: CopyToSpaceFlyoutProps) => {

diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/selectable_spaces_control.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/selectable_spaces_control.tsx index 849a8a7805185..0be5795cb9454 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/selectable_spaces_control.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/selectable_spaces_control.tsx @@ -43,6 +43,7 @@ interface Props { onChange: (selectedSpaceIds: string[]) => void; enableCreateNewSpaceLink: boolean; enableSpaceAgnosticBehavior: boolean; + prohibitedSpaces: Set; } type SpaceOption = EuiSelectableOption & { ['data-space-id']: string }; @@ -73,6 +74,18 @@ const APPEND_CANNOT_DESELECT = ( type="iInCircle" /> ); +const APPEND_PROHIBITED = ( + +); const APPEND_FEATURE_IS_DISABLED = ( { - const { spaces, shareOptions, onChange, enableCreateNewSpaceLink, enableSpaceAgnosticBehavior } = - props; + const { + spaces, + shareOptions, + onChange, + enableCreateNewSpaceLink, + enableSpaceAgnosticBehavior, + prohibitedSpaces, + } = props; const { services } = useSpaces(); const { application, docLinks } = services; const { selectedSpaceIds, initiallySelectedSpaceIds } = shareOptions; @@ -108,7 +127,8 @@ export const SelectableSpacesControl = (props: Props) => { space, activeSpaceId, checked, - isGlobalControlChecked + isGlobalControlChecked, + prohibitedSpaces ); return { label: space.name, @@ -246,7 +266,8 @@ function getAdditionalProps( space: SpacesDataEntry, activeSpaceId: string | false, checked: boolean, - isGlobalControlChecked: boolean + isGlobalControlChecked: boolean, + prohibitedSpaces: Set ) { if (space.id === activeSpaceId) { return { @@ -267,6 +288,18 @@ function getAdditionalProps( disabled: true, }; } + if (prohibitedSpaces.has(space.id) || prohibitedSpaces.has(ALL_SPACES_ID)) { + return { + append: ( + <> + {APPEND_PROHIBITED} + {space.isFeatureDisabled ? APPEND_FEATURE_IS_DISABLED : null} + + ), + ...(space.isFeatureDisabled && { isAvatarDisabled: true }), + disabled: true, + }; + } if (space.isFeatureDisabled) { return { append: APPEND_FEATURE_IS_DISABLED, diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_mode_control.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_mode_control.tsx index 0e8992ea6a3df..319b8a0c98a9c 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_mode_control.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_mode_control.tsx @@ -16,6 +16,7 @@ import { EuiSpacer, EuiText, } from '@elastic/eui'; +import type { ReactNode } from 'react'; import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -35,6 +36,7 @@ interface Props { onChange: (selectedSpaceIds: string[]) => void; enableCreateNewSpaceLink: boolean; enableSpaceAgnosticBehavior: boolean; + prohibitedSpaces: Set; } const buttonGroupLegend = i18n.translate( @@ -54,9 +56,30 @@ const shareToExplicitSpacesButtonLabel = i18n.translate( { defaultMessage: 'Select spaces' } ); -const cannotChangeTooltip = i18n.translate( - 'xpack.spaces.shareToSpace.shareModeControl.shareToAllSpaces.cannotChangeTooltip', - { defaultMessage: 'You need additional privileges to change this option.' } +const CANNOT_CHANGE_TOOLTIP = ( + +); + +const ALL_SPACES_PROHIBITED_TOOLTIP = ( + ); export const ShareModeControl = (props: Props) => { @@ -68,6 +91,7 @@ export const ShareModeControl = (props: Props) => { onChange, enableCreateNewSpaceLink, enableSpaceAgnosticBehavior, + prohibitedSpaces, } = props; const { services } = useSpaces(); const { docLinks } = services; @@ -120,6 +144,14 @@ export const ShareModeControl = (props: Props) => { ); }; + const isGlobalControlChangeProhibited = prohibitedSpaces.size > 0 && !isGlobalControlChecked; + let globalControlTooltip: ReactNode = null; + if (!canShareToAllSpaces) { + globalControlTooltip = CANNOT_CHANGE_TOOLTIP; + } else if (isGlobalControlChangeProhibited) { + globalControlTooltip = ALL_SPACES_PROHIBITED_TOOLTIP; + } + return ( <> {getPrivilegeWarning()} @@ -141,7 +173,7 @@ export const ShareModeControl = (props: Props) => { legend={buttonGroupLegend} color="success" isFullWidth={true} - isDisabled={!canShareToAllSpaces} + isDisabled={!canShareToAllSpaces || isGlobalControlChangeProhibited} /> @@ -173,11 +205,7 @@ export const ShareModeControl = (props: Props) => { )}
- {!canShareToAllSpaces && ( - - - - )} + {globalControlTooltip && {globalControlTooltip}}
@@ -190,6 +218,7 @@ export const ShareModeControl = (props: Props) => { onChange={onChange} enableCreateNewSpaceLink={enableCreateNewSpaceLink} enableSpaceAgnosticBehavior={enableSpaceAgnosticBehavior} + prohibitedSpaces={prohibitedSpaces} />
diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx index 78e64e035bc45..157b684e2c993 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_flyout_internal.tsx @@ -43,6 +43,14 @@ import { RelativesFooter } from './relatives_footer'; import { ShareToSpaceForm } from './share_to_space_form'; import type { InternalLegacyUrlAliasTarget } from './types'; +interface SpacesState { + isLoading: boolean; + spaces: SpacesDataEntry[]; + referenceGraph: SavedObjectReferenceWithContext[]; + aliasTargets: InternalLegacyUrlAliasTarget[]; + prohibitedSpaces: Set; // Any spaces that we cannot share this object to because another object with a matching origin exists there +} + // No need to wrap LazyCopyToSpaceFlyout in an error boundary, because the ShareToSpaceFlyoutInternal component itself is only ever used in // a lazy-loaded fashion with an error boundary. const LazyCopyToSpaceFlyout = lazy(() => @@ -143,7 +151,7 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { const { flyoutIcon, flyoutTitle = i18n.translate('xpack.spaces.shareToSpace.flyoutTitle', { - defaultMessage: 'Assign {objectNoun} to spaces', + defaultMessage: 'Share {objectNoun} to spaces', values: { objectNoun: savedObjectTarget.noun }, }), enableCreateCopyCallout = false, @@ -166,12 +174,14 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { const [canShareToAllSpaces, setCanShareToAllSpaces] = useState(false); const [showMakeCopy, setShowMakeCopy] = useState(false); - const [{ isLoading, spaces, referenceGraph, aliasTargets }, setSpacesState] = useState<{ - isLoading: boolean; - spaces: SpacesDataEntry[]; - referenceGraph: SavedObjectReferenceWithContext[]; - aliasTargets: InternalLegacyUrlAliasTarget[]; - }>({ isLoading: true, spaces: [], referenceGraph: [], aliasTargets: [] }); + const [{ isLoading, spaces, referenceGraph, aliasTargets, prohibitedSpaces }, setSpacesState] = + useState({ + isLoading: true, + spaces: [], + referenceGraph: [], + aliasTargets: [], + prohibitedSpaces: new Set(), + }); useEffect(() => { const { type, id } = savedObjectTarget; const getShareableReferences = spacesManager.getShareableReferences([{ type, id }]); @@ -194,7 +204,7 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { aliasTargets: shareableReferences.objects.reduce( (acc, x) => { for (const space of x.spacesWithMatchingAliases ?? []) { - if (space !== '?') { + if (space !== UNKNOWN_SPACE) { const spaceExists = spacesData.spacesMap.has(space); // If the user does not have privileges to view all spaces, they will be redacted; we cannot attempt to disable aliases for redacted spaces. acc.push({ targetSpace: space, targetType: x.type, sourceId: x.id, spaceExists }); @@ -204,6 +214,20 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { }, [] ), + prohibitedSpaces: shareableReferences.objects.reduce((acc, x) => { + // Whenever we detect that a space contains an object with a matching origin, *and* the list of currently selected spaces does + // not include it, then it is prohibited. That means the user cannot share the object to those spaces. + for (const space of x.spacesWithMatchingOrigins ?? []) { + if ( + space !== UNKNOWN_SPACE && + !selectedSpaceIds.includes(space) && + space !== activeSpaceId + ) { + acc.add(space); + } + } + return acc; + }, new Set()), }); }) .catch((e) => { @@ -329,6 +353,7 @@ export const ShareToSpaceFlyoutInternal = (props: ShareToSpaceFlyoutProps) => { makeCopy={() => setShowMakeCopy(true)} enableCreateNewSpaceLink={enableCreateNewSpaceLink} enableSpaceAgnosticBehavior={enableSpaceAgnosticBehavior} + prohibitedSpaces={prohibitedSpaces} /> ); } diff --git a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_form.tsx b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_form.tsx index 4d39a590d8603..e5391e3c87143 100644 --- a/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_form.tsx +++ b/x-pack/plugins/spaces/public/share_saved_objects_to_space/components/share_to_space_form.tsx @@ -26,6 +26,7 @@ interface Props { makeCopy: () => void; enableCreateNewSpaceLink: boolean; enableSpaceAgnosticBehavior: boolean; + prohibitedSpaces: Set; } export const ShareToSpaceForm = (props: Props) => { @@ -39,6 +40,7 @@ export const ShareToSpaceForm = (props: Props) => { makeCopy, enableCreateNewSpaceLink, enableSpaceAgnosticBehavior, + prohibitedSpaces, } = props; const setSelectedSpaceIds = (selectedSpaceIds: string[]) => @@ -88,6 +90,7 @@ export const ShareToSpaceForm = (props: Props) => { onChange={(selection) => setSelectedSpaceIds(selection)} enableCreateNewSpaceLink={enableCreateNewSpaceLink} enableSpaceAgnosticBehavior={enableSpaceAgnosticBehavior} + prohibitedSpaces={prohibitedSpaces} /> ); diff --git a/x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json b/x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json index beb6e94e5dced..6d37b745fcde7 100644 --- a/x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json +++ b/x-pack/test/spaces_api_integration/common/fixtures/es_archiver/saved_objects/spaces/data.json @@ -434,6 +434,25 @@ } } +{ + "type": "doc", + "value": { + "id": "sharedtype:space_1_only_matching_origin", + "index": ".kibana", + "source": { + "originId": "space_1_only", + "sharedtype": { + "title": "This object only exists to test the second assertion for spacesWithMatchingOrigins in get_shareable_references" + }, + "type": "sharedtype", + "namespaces": ["other_space"], + "references": [], + "updated_at": "2017-09-21T18:59:16.270Z" + }, + "type": "doc" + } +} + { "type": "doc", "value": { @@ -454,6 +473,25 @@ } } +{ + "type": "doc", + "value": { + "id": "sharedtype:space_2_only_matching_origin", + "index": ".kibana", + "source": { + "originId": "space_2_only", + "sharedtype": { + "title": "This object only exists to test the third assertion for spacesWithMatchingOrigins in get_shareable_references" + }, + "type": "sharedtype", + "namespaces": ["*"], + "references": [], + "updated_at": "2017-09-21T18:59:16.270Z" + }, + "type": "doc" + } +} + { "type": "doc", "value": { diff --git a/x-pack/test/spaces_api_integration/common/suites/delete.ts b/x-pack/test/spaces_api_integration/common/suites/delete.ts index d6c429b441341..a1c73125ede28 100644 --- a/x-pack/test/spaces_api_integration/common/suites/delete.ts +++ b/x-pack/test/spaces_api_integration/common/suites/delete.ts @@ -101,17 +101,17 @@ export function deleteTestSuiteFactory(es: Client, esArchiver: any, supertest: S expect(buckets).to.eql(expectedBuckets); - // There were 22 multi-namespace objects. + // There were 24 multi-namespace objects. // Since Space 2 was deleted, any multi-namespace objects that existed in that space // are updated to remove it, and of those, any that don't exist in any space are deleted. const multiNamespaceResponse = await es.search>({ index: '.kibana', - size: 20, + size: 100, body: { query: { terms: { type: ['sharedtype'] } } }, }); const docs = multiNamespaceResponse.hits.hits; - // Just 17 results, since spaces_2_only, conflict_1a_space_2, conflict_1b_space_2, conflict_1c_space_2, and conflict_2_space_2 got deleted. - expect(docs).length(17); + // Just 19 results, since spaces_2_only, conflict_1a_space_2, conflict_1b_space_2, conflict_1c_space_2, and conflict_2_space_2 got deleted. + expect(docs).length(19); docs.forEach((doc) => () => { const containsSpace2 = doc?._source?.namespaces.includes('space_2'); expect(containsSpace2).to.eql(false); diff --git a/x-pack/test/spaces_api_integration/common/suites/get_shareable_references.ts b/x-pack/test/spaces_api_integration/common/suites/get_shareable_references.ts index 0030932f3f36a..fb6c22a761f1e 100644 --- a/x-pack/test/spaces_api_integration/common/suites/get_shareable_references.ts +++ b/x-pack/test/spaces_api_integration/common/suites/get_shareable_references.ts @@ -51,6 +51,7 @@ export const EXPECTED_RESULTS: Record { ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, spaces: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], + spacesWithMatchingOrigins: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], inboundReferences: [{ type: 'sharedtype', id: CASES.DEFAULT_ONLY.id, name: 'refname' }], // only reflects inbound reference that exist in the default space }, { @@ -64,6 +65,7 @@ export const EXPECTED_RESULTS: Record type: 'sharedtype', id: CASES.DEFAULT_ONLY.id, spaces: [DEFAULT_SPACE_ID], + spacesWithMatchingOrigins: [DEFAULT_SPACE_ID], // The first test assertion for spacesWithMatchingOrigins is an object that doesn't have any matching origins in other spaces inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], }, { @@ -84,6 +86,7 @@ export const EXPECTED_RESULTS: Record type: 'sharedtype', id: CASES.ALL_SPACES.id, spaces: ['*'], + spacesWithMatchingOrigins: ['*'], inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], }, ], @@ -91,6 +94,7 @@ export const EXPECTED_RESULTS: Record { ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, spaces: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], + spacesWithMatchingOrigins: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], inboundReferences: [{ type: 'sharedtype', id: CASES.SPACE_1_ONLY.id, name: 'refname' }], // only reflects inbound reference that exist in space 1 }, { @@ -111,8 +115,9 @@ export const EXPECTED_RESULTS: Record type: 'sharedtype', id: CASES.SPACE_1_ONLY.id, spaces: [SPACE_1_ID], - inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], spacesWithMatchingAliases: [DEFAULT_SPACE_ID, SPACE_2_ID], // aliases with a matching targetType and sourceId exist in two other spaces + spacesWithMatchingOrigins: ['other_space', SPACE_1_ID], // The second test assertion for spacesWithMatchingOrigins is an object that has a matching origin in one other space + inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], }, { type: 'sharedtype', @@ -125,6 +130,7 @@ export const EXPECTED_RESULTS: Record type: 'sharedtype', id: CASES.ALL_SPACES.id, spaces: ['*'], + spacesWithMatchingOrigins: ['*'], inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], }, ], @@ -132,6 +138,7 @@ export const EXPECTED_RESULTS: Record { ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, spaces: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], + spacesWithMatchingOrigins: [DEFAULT_SPACE_ID, SPACE_1_ID, SPACE_2_ID], inboundReferences: [{ type: 'sharedtype', id: CASES.SPACE_2_ONLY.id, name: 'refname' }], // only reflects inbound reference that exist in space 2 }, { @@ -159,12 +166,14 @@ export const EXPECTED_RESULTS: Record type: 'sharedtype', id: CASES.SPACE_2_ONLY.id, spaces: [SPACE_2_ID], + spacesWithMatchingOrigins: ['*'], // The third test assertion for spacesWithMatchingOrigins is an object that has a matching origin in all spaces (this takes precedence, causing SPACE_2_ID to be omitted) inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], }, { type: 'sharedtype', id: CASES.ALL_SPACES.id, spaces: ['*'], + spacesWithMatchingOrigins: ['*'], inboundReferences: [{ ...TEST_CASE_OBJECTS.SHAREABLE_TYPE, name: 'refname' }], }, ], @@ -177,7 +186,7 @@ const getTestTitle = ({ objects }: GetShareableReferencesTestCase) => { }; const getRedactedSpaces = (authorizedSpace: string | undefined, spaces: string[]) => { if (!authorizedSpace) { - return spaces; // if authorizedSpace is undefined, we should not redact any spaces + return spaces.sort(); // if authorizedSpace is undefined, we should not redact any spaces } const redactedSpaces = spaces.map((x) => (x !== authorizedSpace && x !== '*' ? '?' : x)); return redactedSpaces.sort((a, b) => (a === '?' ? 1 : b === '?' ? -1 : 0)); // unknown spaces are always at the end of the array @@ -200,17 +209,23 @@ export function getShareableReferencesTestSuiteFactory(esArchiver: any, supertes const apiResponse = response.body as SavedObjectsCollectMultiNamespaceReferencesResponse; expect(apiResponse.objects).to.have.length(expectedResults.length); expectedResults.forEach((expectedResult, i) => { - const { spaces, spacesWithMatchingAliases } = expectedResult; + const { spaces, spacesWithMatchingAliases, spacesWithMatchingOrigins } = expectedResult; const expectedSpaces = getRedactedSpaces(authorizedSpace, spaces); const expectedSpacesWithMatchingAliases = spacesWithMatchingAliases && getRedactedSpaces(authorizedSpace, spacesWithMatchingAliases); + const expectedSpacesWithMatchingOrigins = + spacesWithMatchingOrigins && + getRedactedSpaces(authorizedSpace, spacesWithMatchingOrigins); const expected = { ...expectedResult, spaces: expectedSpaces, ...(expectedSpacesWithMatchingAliases && { spacesWithMatchingAliases: expectedSpacesWithMatchingAliases, }), + ...(expectedSpacesWithMatchingOrigins && { + spacesWithMatchingOrigins: expectedSpacesWithMatchingOrigins, + }), }; expect(apiResponse.objects[i]).to.eql(expected); }); From 834b178574a4c8684de9d7b7fdc33c1ec012daf3 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Tue, 19 Apr 2022 17:04:20 -0400 Subject: [PATCH 17/25] uptime - add monitor management docs link (#130558) --- .../monitor_list/enablement_empty_state.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/monitor_management/monitor_list/enablement_empty_state.tsx b/x-pack/plugins/uptime/public/components/monitor_management/monitor_list/enablement_empty_state.tsx index e8d3c37842d0c..0e7916f44a3aa 100644 --- a/x-pack/plugins/uptime/public/components/monitor_management/monitor_list/enablement_empty_state.tsx +++ b/x-pack/plugins/uptime/public/components/monitor_management/monitor_list/enablement_empty_state.tsx @@ -75,7 +75,10 @@ export const EnablementEmptyState = ({ focusButton }: { focusButton: boolean })

{LEARN_MORE_LABEL}

- + {DOCS_LABEL} @@ -102,7 +105,7 @@ const MONITOR_MANAGEMENT_ENABLEMENT_MESSAGE = i18n.translate( 'xpack.uptime.monitorManagement.emptyState.enablement', { defaultMessage: - 'Enable Monitor Management to run lightweight checks and real-browser monitors from hosted testing locations around the world. Enabling Monitor Management will generate an API key to allow the Synthetics Service to write back to your Elasticsearch cluster.', + 'Enable Monitor Management to run lightweight and real-browser monitors from hosted testing locations around the world. Enabling Monitor Management will generate an API key to allow the Synthetics Service to write back to your Elasticsearch cluster.', } ); @@ -110,7 +113,7 @@ const MONITOR_MANAGEMENT_DISABLED_MESSAGE = i18n.translate( 'xpack.uptime.monitorManagement.emptyState.enablement.disabledDescription', { defaultMessage: - 'Monitor Management is currently disabled. Monitor Management allows you to run lightweight checks and real-browser monitors from hosted testing locations around the world. To enable Monitor Management, please contact an administrator.', + 'Monitor Management is currently disabled. Monitor Management allows you to run lightweight and real-browser monitors from hosted testing locations around the world. To enable Monitor Management, please contact an administrator.', } ); From 2ec9f22d2d8b32df71321619b902fa34d3298d69 Mon Sep 17 00:00:00 2001 From: Ersin Erdal <92688503+ersin-erdal@users.noreply.github.com> Date: Tue, 19 Apr 2022 23:05:04 +0200 Subject: [PATCH 18/25] Fix overlooked term "execution" in kibana-docker allowed list (#130605) --- .../docker_generator/resources/base/bin/kibana-docker | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker index 7ce7459d6eefd..fbf6d64170ee8 100755 --- a/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker +++ b/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker @@ -200,12 +200,12 @@ kibana_vars=( xpack.alerting.invalidateApiKeysTask.interval xpack.alerting.invalidateApiKeysTask.removalDelay xpack.alerting.defaultRuleTaskTimeout - xpack.alerting.rules.execution.timeout - xpack.alerting.rules.execution.ruleTypeOverrides + xpack.alerting.rules.run.timeout + xpack.alerting.rules.run.ruleTypeOverrides xpack.alerting.cancelAlertsOnRuleTimeout xpack.alerting.rules.minimumScheduleInterval.value xpack.alerting.rules.minimumScheduleInterval.enforce - xpack.alerting.rules.execution.actions.max + xpack.alerting.rules.run.actions.max xpack.alerts.healthCheck.interval xpack.alerts.invalidateApiKeysTask.interval xpack.alerts.invalidateApiKeysTask.removalDelay From c0ab947da1de63897f9ec7c1d51492253c57a00a Mon Sep 17 00:00:00 2001 From: Zacqary Adam Xeper Date: Tue, 19 Apr 2022 16:35:04 -0500 Subject: [PATCH 19/25] [RAM] Make RuleStatusDropdown shareable (#130205) * Add shareable e dropdown and move snooze interval to localstorage * Add internal components sandbox page and status dropdown test * Remove components sandbox tab * Fix typecheck * Fix typechecks and tests * Attempt to deflake tests * Reenable previousSnoozeInterval from props and prefix storage key * Export missing apis * Fix tooltip for indefinite snooze * Attempt to deflake functional test * Modularize Sandbox * Up triggersActionsUi package limit --- packages/kbn-optimizer/limits.yml | 2 +- .../common/experimental_features.ts | 1 + .../public/application/app.tsx | 2 +- .../public/application/constants/index.ts | 3 +- .../public/application/home.tsx | 21 ++++- .../rule_status_dropdown_sandbox.tsx | 44 ++++++++++ .../shareable_components_sandbox.tsx | 20 +++++ .../public/application/sections/index.tsx | 4 + .../rule_details/components/rule_details.tsx | 3 +- .../components/rule_status_dropdown.test.tsx | 15 ++-- .../components/rule_status_dropdown.tsx | 87 ++++++++++++++----- .../rules_list/components/rules_list.tsx | 5 +- .../common/get_experimental_features.test.tsx | 5 ++ .../common/get_rule_status_dropdown.tsx | 14 +++ .../triggers_actions_ui/public/index.ts | 2 + .../triggers_actions_ui/public/mocks.ts | 4 + .../triggers_actions_ui/public/plugin.ts | 6 ++ .../triggers_actions_ui/public/types.ts | 2 + .../apps/triggers_actions_ui/index.ts | 1 + .../rule_status_dropdown.ts | 54 ++++++++++++ x-pack/test/functional_with_es_ssl/config.ts | 5 +- 21 files changed, 259 insertions(+), 41 deletions(-) create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/rule_status_dropdown_sandbox.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/shareable_components_sandbox.tsx create mode 100644 x-pack/plugins/triggers_actions_ui/public/common/get_rule_status_dropdown.tsx create mode 100644 x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rule_status_dropdown.ts diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index a8eaa148e74d4..f2f3fbc07aac8 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -56,7 +56,7 @@ pageLoadAssetSize: telemetry: 51957 telemetryManagementSection: 38586 transform: 41007 - triggersActionsUi: 102400 + triggersActionsUi: 103400 upgradeAssistant: 81241 uptime: 40825 urlForwarding: 32579 diff --git a/x-pack/plugins/triggers_actions_ui/common/experimental_features.ts b/x-pack/plugins/triggers_actions_ui/common/experimental_features.ts index 3a081a5a45486..21835a5977216 100644 --- a/x-pack/plugins/triggers_actions_ui/common/experimental_features.ts +++ b/x-pack/plugins/triggers_actions_ui/common/experimental_features.ts @@ -14,6 +14,7 @@ export type ExperimentalFeatures = typeof allowedExperimentalValues; export const allowedExperimentalValues = Object.freeze({ rulesListDatagrid: true, internalAlertsTable: false, + internalShareableComponentsSandbox: false, rulesDetailLogs: true, }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx index 91c8b06d31a88..71bcb2ee7d760 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/app.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/app.tsx @@ -68,7 +68,7 @@ export const renderApp = (deps: TriggersAndActionsUiServices) => { export const App = ({ deps }: { deps: TriggersAndActionsUiServices }) => { const { savedObjects, uiSettings, theme$ } = deps; - const sections: Section[] = ['rules', 'connectors', 'alerts']; + const sections: Section[] = ['rules', 'connectors', 'alerts', '__components_sandbox']; const isDarkMode = useObservable(uiSettings.get$('theme:darkMode')); const sectionsRegex = sections.join('|'); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts b/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts index b0c417e3ef9c9..99c115def07e6 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/constants/index.ts @@ -13,13 +13,14 @@ export { } from '@kbn/alerting-plugin/common'; export { BASE_ACTION_API_PATH, INTERNAL_BASE_ACTION_API_PATH } from '@kbn/actions-plugin/common'; -export type Section = 'connectors' | 'rules' | 'alerts'; +export type Section = 'connectors' | 'rules' | 'alerts' | '__components_sandbox'; export const routeToHome = `/`; export const routeToConnectors = `/connectors`; export const routeToRules = `/rules`; export const routeToRuleDetails = `/rule/:ruleId`; export const routeToInternalAlerts = `/alerts`; +export const routeToInternalShareableComponentsSandbox = '/__components_sandbox'; export const legacyRouteToRules = `/alerts`; export const legacyRouteToRuleDetails = `/alert/:alertId`; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/home.tsx b/x-pack/plugins/triggers_actions_ui/public/application/home.tsx index 9110ebe1f51c8..802e3178b1554 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/home.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/home.tsx @@ -11,7 +11,13 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { EuiSpacer, EuiButtonEmpty, EuiPageHeader } from '@elastic/eui'; import { getIsExperimentalFeatureEnabled } from '../common/get_experimental_features'; -import { Section, routeToConnectors, routeToRules, routeToInternalAlerts } from './constants'; +import { + Section, + routeToConnectors, + routeToRules, + routeToInternalAlerts, + routeToInternalShareableComponentsSandbox, +} from './constants'; import { getAlertingSectionBreadcrumb } from './lib/breadcrumb'; import { getCurrentDocTitle } from './lib/doc_title'; import { hasShowActionsCapability } from './lib/capabilities'; @@ -26,6 +32,9 @@ const ActionsConnectorsList = lazy( ); const RulesList = lazy(() => import('./sections/rules_list/components/rules_list')); const AlertsPage = lazy(() => import('./sections/alerts_table/alerts_page')); +const InternalShareableComponentsSandbox = lazy( + () => import('./internal/shareable_components_sandbox/shareable_components_sandbox') +); export interface MatchParams { section: Section; @@ -45,6 +54,9 @@ export const TriggersActionsUIHome: React.FunctionComponent + {isInternalShareableComponentsSandboxEnabled && ( + + )} {isInternalAlertsTableEnabled ? ( = () => { + const [enabled, setEnabled] = useState(true); + const [snoozeEndTime, setSnoozeEndTime] = useState(null); + const [muteAll, setMuteAll] = useState(false); + + return getRuleStatusDropdownLazy({ + rule: { + enabled, + snoozeEndTime, + muteAll, + }, + enableRule: async () => { + setEnabled(true); + setMuteAll(false); + setSnoozeEndTime(null); + }, + disableRule: async () => setEnabled(false), + snoozeRule: async (time) => { + if (time === -1) { + setSnoozeEndTime(null); + setMuteAll(true); + } else { + setSnoozeEndTime(new Date(time)); + setMuteAll(false); + } + }, + unsnoozeRule: async () => { + setMuteAll(false); + setSnoozeEndTime(null); + }, + onRuleChanged: () => {}, + isEditable: true, + }); +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/shareable_components_sandbox.tsx b/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/shareable_components_sandbox.tsx new file mode 100644 index 0000000000000..97366832bda0e --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/application/internal/shareable_components_sandbox/shareable_components_sandbox.tsx @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RuleStatusDropdownSandbox } from './rule_status_dropdown_sandbox'; + +export const InternalShareableComponentsSandbox: React.FC<{}> = () => { + return ( + <> + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { InternalShareableComponentsSandbox as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/index.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/index.tsx index 5b8a6ea569344..0aaa3195b7c52 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/index.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/index.tsx @@ -28,3 +28,7 @@ export const ConnectorEditFlyout = suspendedComponentWithProps( export const ActionForm = suspendedComponentWithProps( lazy(() => import('./action_connector_form/action_form')) ); + +export const RuleStatusDropdown = suspendedComponentWithProps( + lazy(() => import('./rules_list/components/rule_status_dropdown')) +); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx index c940666b54077..b3363159851d0 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_details/components/rule_details.tsx @@ -285,11 +285,10 @@ export const RuleDetails: React.FunctionComponent = ({ await snoozeRule(rule, snoozeEndTime) } unsnoozeRule={async () => await unsnoozeRule(rule)} - item={rule as RuleTableItem} + rule={rule as RuleTableItem} onRuleChanged={requestRefresh} direction="row" isEditable={hasEditButton} - previousSnoozeInterval={null} /> diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx index ad642738dfbba..15086518124b4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.test.tsx @@ -23,8 +23,7 @@ describe('RuleStatusDropdown', () => { snoozeRule, unsnoozeRule, isEditable: true, - previousSnoozeInterval: null, - item: { + rule: { id: '1', name: 'test rule', tags: ['tag1'], @@ -53,7 +52,7 @@ describe('RuleStatusDropdown', () => { index: 0, updatedAt: new Date('2020-08-20T19:23:38Z'), snoozeEndTime: null, - }, + } as ComponentOpts['rule'], onRuleChanged: jest.fn(), }; @@ -75,7 +74,7 @@ describe('RuleStatusDropdown', () => { test('renders status control as disabled when rule is disabled', () => { const wrapper = mountWithIntl( - + ); expect(wrapper.find('[data-test-subj="statusDropdown"]').first().props().title).toBe( 'Disabled' @@ -87,7 +86,7 @@ describe('RuleStatusDropdown', () => { const wrapper = mountWithIntl( ); expect(wrapper.find('[data-test-subj="statusDropdown"]').first().props().title).toBe('Snoozed'); @@ -98,7 +97,7 @@ describe('RuleStatusDropdown', () => { jest.spyOn(global.Date, 'now').mockImplementation(() => new Date(NOW_STRING).valueOf()); const wrapper = mountWithIntl( - + ); expect(wrapper.find('[data-test-subj="statusDropdown"]').first().props().title).toBe('Snoozed'); expect(wrapper.find('[data-test-subj="remainingSnoozeTime"]').first().text()).toBe( @@ -109,7 +108,7 @@ describe('RuleStatusDropdown', () => { test('renders status control as disabled when rule is snoozed but also disabled', () => { const wrapper = mountWithIntl( ); expect(wrapper.find('[data-test-subj="statusDropdown"]').first().props().title).toBe( @@ -122,7 +121,7 @@ describe('RuleStatusDropdown', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx index 098d7c08a78f5..40658ae282e16 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rule_status_dropdown.tsx @@ -31,20 +31,22 @@ import { } from '@elastic/eui'; import { parseInterval } from '../../../../../common'; -import { RuleTableItem } from '../../../../types'; +import { Rule } from '../../../../types'; type SnoozeUnit = 'm' | 'h' | 'd' | 'w' | 'M'; const SNOOZE_END_TIME_FORMAT = 'LL @ LT'; +type DropdownRuleRecord = Pick; + export interface ComponentOpts { - item: RuleTableItem; + rule: DropdownRuleRecord; onRuleChanged: () => void; enableRule: () => Promise; disableRule: () => Promise; snoozeRule: (snoozeEndTime: string | -1, interval: string | null) => Promise; unsnoozeRule: () => Promise; isEditable: boolean; - previousSnoozeInterval: string | null; + previousSnoozeInterval?: string | null; direction?: 'column' | 'row'; } @@ -55,34 +57,64 @@ const COMMON_SNOOZE_TIMES: Array<[number, SnoozeUnit]> = [ [1, 'd'], ]; +const PREV_SNOOZE_INTERVAL_KEY = 'triggersActionsUi_previousSnoozeInterval'; +const usePreviousSnoozeInterval: (p?: string | null) => [string | null, (n: string) => void] = ( + propsInterval +) => { + const intervalFromStorage = localStorage.getItem(PREV_SNOOZE_INTERVAL_KEY); + const usePropsInterval = typeof propsInterval !== 'undefined'; + const interval = usePropsInterval ? propsInterval : intervalFromStorage; + const [previousSnoozeInterval, setPreviousSnoozeInterval] = useState(interval); + const storeAndSetPreviousSnoozeInterval = (newInterval: string) => { + if (!usePropsInterval) { + localStorage.setItem(PREV_SNOOZE_INTERVAL_KEY, newInterval); + } + setPreviousSnoozeInterval(newInterval); + }; + return [previousSnoozeInterval, storeAndSetPreviousSnoozeInterval]; +}; + export const RuleStatusDropdown: React.FunctionComponent = ({ - item, + rule, onRuleChanged, disableRule, enableRule, snoozeRule, unsnoozeRule, isEditable, - previousSnoozeInterval, + previousSnoozeInterval: propsPreviousSnoozeInterval, direction = 'column', }: ComponentOpts) => { - const [isEnabled, setIsEnabled] = useState(item.enabled); - const [isSnoozed, setIsSnoozed] = useState(isItemSnoozed(item)); + const [isEnabled, setIsEnabled] = useState(rule.enabled); + const [isSnoozed, setIsSnoozed] = useState(isRuleSnoozed(rule)); + const [previousSnoozeInterval, setPreviousSnoozeInterval] = usePreviousSnoozeInterval( + propsPreviousSnoozeInterval + ); + useEffect(() => { - setIsEnabled(item.enabled); - }, [item.enabled]); + setIsEnabled(rule.enabled); + }, [rule.enabled]); useEffect(() => { - setIsSnoozed(isItemSnoozed(item)); - }, [item]); + setIsSnoozed(isRuleSnoozed(rule)); + }, [rule]); const [isUpdating, setIsUpdating] = useState(false); const [isPopoverOpen, setIsPopoverOpen] = useState(false); const onClickBadge = useCallback(() => setIsPopoverOpen((isOpen) => !isOpen), [setIsPopoverOpen]); const onClosePopover = useCallback(() => setIsPopoverOpen(false), [setIsPopoverOpen]); + const snoozeRuleAndStoreInterval = useCallback( + (snoozeEndTime: string | -1, interval: string | null) => { + if (interval) { + setPreviousSnoozeInterval(interval); + } + return snoozeRule(snoozeEndTime, interval); + }, + [setPreviousSnoozeInterval, snoozeRule] + ); const onChangeEnabledStatus = useCallback( async (enable: boolean) => { - if (item.enabled === enable) { + if (rule.enabled === enable) { return; } setIsUpdating(true); @@ -98,17 +130,17 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ setIsUpdating(false); } }, - [item.enabled, isEnabled, onRuleChanged, enableRule, disableRule] + [rule.enabled, isEnabled, onRuleChanged, enableRule, disableRule] ); const onChangeSnooze = useCallback( async (value: number, unit?: SnoozeUnit) => { setIsUpdating(true); try { if (value === -1) { - await snoozeRule(-1, null); + await snoozeRuleAndStoreInterval(-1, null); } else if (value !== 0) { const snoozeEndTime = moment().add(value, unit).toISOString(); - await snoozeRule(snoozeEndTime, `${value}${unit}`); + await snoozeRuleAndStoreInterval(snoozeEndTime, `${value}${unit}`); } else await unsnoozeRule(); setIsSnoozed(value !== 0); onRuleChanged(); @@ -116,7 +148,7 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ setIsUpdating(false); } }, - [setIsUpdating, setIsSnoozed, onRuleChanged, snoozeRule, unsnoozeRule] + [setIsUpdating, setIsSnoozed, onRuleChanged, snoozeRuleAndStoreInterval, unsnoozeRule] ); const badgeColor = !isEnabled ? 'default' : isSnoozed ? 'warning' : 'primary'; @@ -124,9 +156,13 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ const remainingSnoozeTime = isEnabled && isSnoozed ? ( - + - {item.muteAll ? INDEFINITELY : moment(item.snoozeEndTime).fromNow(true)} + {rule.muteAll ? INDEFINITELY : moment(rule.snoozeEndTime).fromNow(true)} ) : null; @@ -179,7 +215,7 @@ export const RuleStatusDropdown: React.FunctionComponent = ({ onChangeSnooze={onChangeSnooze} isEnabled={isEnabled} isSnoozed={isSnoozed} - snoozeEndTime={item.snoozeEndTime} + snoozeEndTime={rule.snoozeEndTime} previousSnoozeInterval={previousSnoozeInterval} /> @@ -267,6 +303,7 @@ const RuleStatusMenu: React.FunctionComponent = ({ icon: isEnabled && isSnoozed ? 'check' : 'empty', panel: 1, disabled: !isEnabled, + 'data-test-subj': 'statusDropdownSnoozeItem', }, ], }, @@ -330,6 +367,7 @@ const SnoozePanel: React.FunctionComponent = ({ applySnooze(parsedPrevSnooze.value, parsedPrevSnooze.unit as SnoozeUnit)} > {i18n.translate('xpack.triggersActionsUI.sections.rulesList.previousSnooze', { @@ -338,7 +376,7 @@ const SnoozePanel: React.FunctionComponent = ({ - + {durationToTextString(parsedPrevSnooze.value, parsedPrevSnooze.unit as SnoozeUnit)} @@ -358,6 +396,7 @@ const SnoozePanel: React.FunctionComponent = ({ 'xpack.triggersActionsUI.sections.rulesList.snoozePanelIntervalValueLabel', { defaultMessage: 'Snooze interval value' } )} + data-test-subj="ruleSnoozeIntervalValue" /> @@ -376,6 +415,7 @@ const SnoozePanel: React.FunctionComponent = ({ { value: 'w', text: WEEKS }, { value: 'M', text: MONTHS }, ]} + data-test-subj="ruleSnoozeIntervalUnit" /> @@ -434,8 +474,8 @@ const SnoozePanel: React.FunctionComponent = ({ ); }; -const isItemSnoozed = (item: { snoozeEndTime?: Date | null; muteAll: boolean }) => { - const { snoozeEndTime, muteAll } = item; +const isRuleSnoozed = (rule: DropdownRuleRecord) => { + const { snoozeEndTime, muteAll } = rule; if (muteAll) return true; if (!snoozeEndTime) { return false; @@ -548,3 +588,6 @@ const ONE: Record = { defaultMessage: '1 month', }), }; + +// eslint-disable-next-line import/no-default-export +export { RuleStatusDropdown as default }; diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx index 73dc8e8e8c2cd..59515ca3c3622 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rules_list/components/rules_list.tsx @@ -160,7 +160,6 @@ export const RulesList: React.FunctionComponent = () => { const [editFlyoutVisible, setEditFlyoutVisibility] = useState(false); const [currentRuleToEdit, setCurrentRuleToEdit] = useState(null); const [tagPopoverOpenIndex, setTagPopoverOpenIndex] = useState(-1); - const [previousSnoozeInterval, setPreviousSnoozeInterval] = useState(null); const [itemIdToExpandedRowMap, setItemIdToExpandedRowMap] = useState>( {} ); @@ -355,13 +354,11 @@ export const RulesList: React.FunctionComponent = () => { enableRule={async () => await enableRule({ http, id: item.id })} snoozeRule={async (snoozeEndTime: string | -1, interval: string | null) => { await snoozeRule({ http, id: item.id, snoozeEndTime }); - setPreviousSnoozeInterval(interval); }} unsnoozeRule={async () => await unsnoozeRule({ http, id: item.id })} - item={item} + rule={item} onRuleChanged={() => loadRulesData()} isEditable={item.isEditable && isRuleTypeEditableInContext(item.ruleTypeId)} - previousSnoozeInterval={previousSnoozeInterval} /> ); }; diff --git a/x-pack/plugins/triggers_actions_ui/public/common/get_experimental_features.test.tsx b/x-pack/plugins/triggers_actions_ui/public/common/get_experimental_features.test.tsx index aa7de97a6c889..237eccb0b4434 100644 --- a/x-pack/plugins/triggers_actions_ui/public/common/get_experimental_features.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/common/get_experimental_features.test.tsx @@ -18,6 +18,7 @@ describe('getIsExperimentalFeatureEnabled', () => { rulesListDatagrid: true, internalAlertsTable: true, rulesDetailLogs: true, + internalShareableComponentsSandbox: true, }, }); @@ -33,6 +34,10 @@ describe('getIsExperimentalFeatureEnabled', () => { expect(result).toEqual(true); + result = getIsExperimentalFeatureEnabled('internalShareableComponentsSandbox'); + + expect(result).toEqual(true); + expect(() => getIsExperimentalFeatureEnabled('doesNotExist' as any)).toThrowError( `Invalid enable value doesNotExist. Allowed values are: ${allowedExperimentalValueKeys.join( ', ' diff --git a/x-pack/plugins/triggers_actions_ui/public/common/get_rule_status_dropdown.tsx b/x-pack/plugins/triggers_actions_ui/public/common/get_rule_status_dropdown.tsx new file mode 100644 index 0000000000000..06edadef7fab5 --- /dev/null +++ b/x-pack/plugins/triggers_actions_ui/public/common/get_rule_status_dropdown.tsx @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { RuleStatusDropdown } from '../application/sections'; +import type { ComponentOpts } from '../application/sections/rules_list/components/rule_status_dropdown'; + +export const getRuleStatusDropdownLazy = (props: ComponentOpts) => { + return ; +}; diff --git a/x-pack/plugins/triggers_actions_ui/public/index.ts b/x-pack/plugins/triggers_actions_ui/public/index.ts index f72ed095efdcc..94fe718363e2b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/index.ts +++ b/x-pack/plugins/triggers_actions_ui/public/index.ts @@ -57,6 +57,8 @@ export { enableRule } from './application/lib/rule_api/enable'; export { disableRule } from './application/lib/rule_api/disable'; export { muteRule } from './application/lib/rule_api/mute'; export { unmuteRule } from './application/lib/rule_api/unmute'; +export { snoozeRule } from './application/lib/rule_api/snooze'; +export { unsnoozeRule } from './application/lib/rule_api/unsnooze'; export { loadRuleAggregations } from './application/lib/rule_api/aggregate'; export { useLoadRuleTypes } from './application/hooks/use_load_rule_types'; diff --git a/x-pack/plugins/triggers_actions_ui/public/mocks.ts b/x-pack/plugins/triggers_actions_ui/public/mocks.ts index 87b270070c10b..79edc1f08ac97 100644 --- a/x-pack/plugins/triggers_actions_ui/public/mocks.ts +++ b/x-pack/plugins/triggers_actions_ui/public/mocks.ts @@ -24,6 +24,7 @@ import { AlertsTableConfigurationRegistry, } from './types'; import { getAlertsTableLazy } from './common/get_alerts_table'; +import { getRuleStatusDropdownLazy } from './common/get_rule_status_dropdown'; function createStartMock(): TriggersAndActionsUIPublicPluginStart { const actionTypeRegistry = new TypeRegistry(); @@ -59,6 +60,9 @@ function createStartMock(): TriggersAndActionsUIPublicPluginStart { getAlertsTable: (props: AlertsTableProps) => { return getAlertsTableLazy(props); }, + getRuleStatusDropdown: (props) => { + return getRuleStatusDropdownLazy(props); + }, }; } diff --git a/x-pack/plugins/triggers_actions_ui/public/plugin.ts b/x-pack/plugins/triggers_actions_ui/public/plugin.ts index e07fb2a6fef99..ba2e869c82e0f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/plugin.ts +++ b/x-pack/plugins/triggers_actions_ui/public/plugin.ts @@ -29,6 +29,7 @@ import { getEditConnectorFlyoutLazy } from './common/get_edit_connector_flyout'; import { getAddAlertFlyoutLazy } from './common/get_add_alert_flyout'; import { getEditAlertFlyoutLazy } from './common/get_edit_alert_flyout'; import { getAlertsTableLazy } from './common/get_alerts_table'; +import { getRuleStatusDropdownLazy } from './common/get_rule_status_dropdown'; import { ExperimentalFeaturesService } from './common/experimental_features_service'; import { ExperimentalFeatures, @@ -43,6 +44,7 @@ import type { ConnectorAddFlyoutProps, ConnectorEditFlyoutProps, AlertsTableProps, + RuleStatusDropdownProps, AlertsTableConfigurationRegistry, } from './types'; import { TriggersActionsUiConfigType } from '../common/types'; @@ -72,6 +74,7 @@ export interface TriggersAndActionsUIPublicPluginStart { props: Omit ) => ReactElement; getAlertsTable: (props: AlertsTableProps) => ReactElement; + getRuleStatusDropdown: (props: RuleStatusDropdownProps) => ReactElement; } interface PluginsSetup { @@ -238,6 +241,9 @@ export class Plugin getAlertsTable: (props: AlertsTableProps) => { return getAlertsTableLazy(props); }, + getRuleStatusDropdown: (props: RuleStatusDropdownProps) => { + return getRuleStatusDropdownLazy(props); + }, }; } diff --git a/x-pack/plugins/triggers_actions_ui/public/types.ts b/x-pack/plugins/triggers_actions_ui/public/types.ts index d411182e15237..2d4268252a353 100644 --- a/x-pack/plugins/triggers_actions_ui/public/types.ts +++ b/x-pack/plugins/triggers_actions_ui/public/types.ts @@ -47,6 +47,7 @@ import { } from '@kbn/alerting-plugin/common'; import { RuleRegistrySearchRequestPagination } from '@kbn/rule-registry-plugin/common'; import { TypeRegistry } from './application/type_registry'; +import type { ComponentOpts as RuleStatusDropdownProps } from './application/sections/rules_list/components/rule_status_dropdown'; // In Triggers and Actions we treat all `Alert`s as `SanitizedRule` // so the `Params` is a black-box of Record @@ -78,6 +79,7 @@ export type { RuleTypeParams, ResolvedRule, SanitizedRule, + RuleStatusDropdownProps, }; export type { ActionType, AsApiContract }; export { diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts index 76a952c354ab4..179cd0c7ab8e9 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/index.ts @@ -16,5 +16,6 @@ export default ({ loadTestFile, getService }: FtrProviderContext) => { loadTestFile(require.resolve('./details')); loadTestFile(require.resolve('./connectors')); loadTestFile(require.resolve('./alerts_table')); + loadTestFile(require.resolve('./rule_status_dropdown')); }); }; diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rule_status_dropdown.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rule_status_dropdown.ts new file mode 100644 index 0000000000000..b594d88a25689 --- /dev/null +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rule_status_dropdown.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +export default ({ getPageObjects, getService }: FtrProviderContext) => { + const testSubjects = getService('testSubjects'); + const PageObjects = getPageObjects(['common', 'triggersActionsUI', 'header']); + // const retry = getService('retry'); + const esArchiver = getService('esArchiver'); + // const find = getService('find'); + + describe('Rule status dropdown', function () { + before(async () => { + await esArchiver.load('x-pack/test/functional/es_archives/observability/alerts'); + await PageObjects.common.navigateToUrlWithBrowserHistory( + 'triggersActions', + '/__components_sandbox' + ); + }); + after(async () => { + await esArchiver.unload('x-pack/test/functional/es_archives/observability/alerts'); + }); + + it('should load from the shareable lazy loader', async () => { + await testSubjects.find('statusDropdown'); + const exists = await testSubjects.exists('statusDropdown'); + expect(exists).to.be(true); + }); + + it('should store the previous snooze interval', async () => { + await testSubjects.find('statusDropdown'); + await testSubjects.click('statusDropdown'); + await testSubjects.click('statusDropdownSnoozeItem'); + await testSubjects.setValue('ruleSnoozeIntervalValue', '10'); + await testSubjects.setValue('ruleSnoozeIntervalUnit', 'h'); + await testSubjects.click('ruleSnoozeApply'); + + // Wait for the dropdown to finish re-rendering before opening again + await new Promise((res) => setTimeout(res, 500)); + + await testSubjects.click('statusDropdown'); + await testSubjects.click('statusDropdownSnoozeItem'); + await testSubjects.setValue('ruleSnoozeIntervalValue', '3'); + expect(await testSubjects.exists('ruleSnoozePreviousText')).to.be(true); + expect(await testSubjects.getVisibleText('ruleSnoozePreviousText')).to.be('10 hours'); + }); + }); +}; diff --git a/x-pack/test/functional_with_es_ssl/config.ts b/x-pack/test/functional_with_es_ssl/config.ts index 1c10548b90699..5243b97898578 100644 --- a/x-pack/test/functional_with_es_ssl/config.ts +++ b/x-pack/test/functional_with_es_ssl/config.ts @@ -71,7 +71,10 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) { `--elasticsearch.hosts=https://${servers.elasticsearch.hostname}:${servers.elasticsearch.port}`, `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, `--plugin-path=${join(__dirname, 'fixtures', 'plugins', 'alerts')}`, - `--xpack.trigger_actions_ui.enableExperimental=${JSON.stringify(['internalAlertsTable'])}`, + `--xpack.trigger_actions_ui.enableExperimental=${JSON.stringify([ + 'internalAlertsTable', + 'internalShareableComponentsSandbox', + ])}`, `--xpack.alerting.rules.minimumScheduleInterval.value="2s"`, `--xpack.actions.enabledActionTypes=${JSON.stringify(enabledActionTypes)}`, `--xpack.actions.preconfiguredAlertHistoryEsIndex=false`, From 64d7bccacf969e11c7b158826c384de3db015718 Mon Sep 17 00:00:00 2001 From: Hannah Mudge Date: Tue, 19 Apr 2022 15:40:27 -0600 Subject: [PATCH 20/25] [Dashboard] [Telemetry] Report panels in dashboards by type (#130166) * Add new panel telemetry * Restructure panel data to sort by type first * Fix jest tests + slight restructure * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .../server/usage/dashboard_telemetry.test.ts | 151 +++++++-------- .../server/usage/dashboard_telemetry.ts | 176 +++++------------- .../server/usage/register_collector.ts | 61 +++--- src/plugins/telemetry/schema/oss_plugins.json | 73 +++++--- 4 files changed, 203 insertions(+), 258 deletions(-) diff --git a/src/plugins/dashboard/server/usage/dashboard_telemetry.test.ts b/src/plugins/dashboard/server/usage/dashboard_telemetry.test.ts index 974d80f9c0f4e..ea981be3515f8 100644 --- a/src/plugins/dashboard/server/usage/dashboard_telemetry.test.ts +++ b/src/plugins/dashboard/server/usage/dashboard_telemetry.test.ts @@ -7,12 +7,9 @@ */ import { SavedDashboardPanel730ToLatest } from '../../common'; -import { - collectDashboardInfo, - getEmptyTelemetryData, - collectByValueVisualizationInfo, - collectByValueLensInfo, -} from './dashboard_telemetry'; +import { getEmptyDashboardData, collectPanelsByType } from './dashboard_telemetry'; +import { EmbeddableStateWithType } from '@kbn/embeddable-plugin/common'; +import { createEmbeddablePersistableStateServiceMock } from '@kbn/embeddable-plugin/common/mocks'; const visualizationType1ByValue = { embeddableConfig: { @@ -31,6 +28,7 @@ const visualizationType2ByValue = { }, type: 'visualization', } as unknown as SavedDashboardPanel730ToLatest; + const visualizationType2ByReference = { ...visualizationType2ByValue, id: '11111', @@ -44,6 +42,7 @@ const lensTypeAByValue = { }, }, } as unknown as SavedDashboardPanel730ToLatest; + const lensTypeAByReference = { ...lensTypeAByValue, id: '22222', @@ -93,91 +92,97 @@ const lensXYSeriesB = { }, } as unknown as SavedDashboardPanel730ToLatest; +const embeddablePersistableStateService = createEmbeddablePersistableStateServiceMock(); + describe('dashboard telemetry', () => { + beforeAll(() => { + embeddablePersistableStateService.extract.mockImplementationOnce((state) => { + const { HARDCODED_ID, ...restOfState } = state as unknown as Record; + return { + state: restOfState as EmbeddableStateWithType, + references: [{ id: HARDCODED_ID as string, name: 'refName', type: 'type' }], + }; + }); + + embeddablePersistableStateService.inject.mockImplementationOnce((state, references) => { + const ref = references.find((r) => r.name === 'refName'); + return { + ...state, + HARDCODED_ID: ref!.id, + }; + }); + }); + it('collects information about dashboard panels', () => { const panels = [ visualizationType1ByValue, visualizationType2ByValue, visualizationType2ByReference, ]; - const collectorData = getEmptyTelemetryData(); - - collectDashboardInfo(panels, collectorData); + const collectorData = getEmptyDashboardData(); + collectPanelsByType(panels, collectorData, embeddablePersistableStateService); - expect(collectorData.panels).toBe(panels.length); - expect(collectorData.panelsByValue).toBe(2); + expect(collectorData.panels.total).toBe(panels.length); + expect(collectorData.panels.by_value).toBe(2); + expect(collectorData.panels.by_reference).toBe(1); }); - describe('visualizations', () => { - it('collects information about by value visualizations', () => { - const panels = [ - visualizationType1ByValue, - visualizationType1ByValue, - visualizationType2ByValue, - visualizationType2ByReference, - ]; - - const collectorData = getEmptyTelemetryData(); - - collectByValueVisualizationInfo(panels, collectorData); - - expect(collectorData.visualizationByValue.type1).toBe(2); - expect(collectorData.visualizationByValue.type2).toBe(1); - }); - - it('handles misshapen visualization panels without errors', () => { - const badVisualizationPanel = { - embeddableConfig: {}, - type: 'visualization', - } as unknown as SavedDashboardPanel730ToLatest; - - const panels = [badVisualizationPanel, visualizationType1ByValue]; - - const collectorData = getEmptyTelemetryData(); + it('collects information about visualizations', () => { + const panels = [ + visualizationType1ByValue, + visualizationType1ByValue, + visualizationType2ByValue, + visualizationType2ByReference, + ]; - collectByValueVisualizationInfo(panels, collectorData); + const collectorData = getEmptyDashboardData(); + collectPanelsByType(panels, collectorData, embeddablePersistableStateService); - expect(Object.keys(collectorData.visualizationByValue)).toHaveLength(1); - }); + expect(collectorData.panels.by_type.visualization.total).toBe(panels.length); + expect(collectorData.panels.by_type.visualization.by_value).toBe(3); + expect(collectorData.panels.by_type.visualization.by_reference).toBe(1); }); - describe('lens', () => { - it('collects information about by value lens', () => { - const panels = [ - lensTypeAByValue, - lensTypeAByValue, - lensTypeAByValue, - lensTypeAByReference, - lensXYSeriesA, - lensXYSeriesA, - lensXYSeriesB, - ]; - - const collectorData = getEmptyTelemetryData(); - - collectByValueLensInfo(panels, collectorData); - - expect(collectorData.lensByValue.a).toBe(3); - expect(collectorData.lensByValue.seriesA).toBe(2); - expect(collectorData.lensByValue.seriesB).toBe(1); - expect(collectorData.lensByValue.formula).toBe(1); - }); + it('collects information about lens', () => { + const panels = [ + lensTypeAByValue, + lensTypeAByValue, + lensTypeAByValue, + lensTypeAByReference, + lensXYSeriesA, + lensXYSeriesA, + lensXYSeriesB, + ]; - it('handles misshapen lens panels', () => { - const badPanel = { - type: 'lens', - embeddableConfig: { - oops: 'no visualization type', - }, - } as unknown as SavedDashboardPanel730ToLatest; + const collectorData = getEmptyDashboardData(); + collectPanelsByType(panels, collectorData, embeddablePersistableStateService); - const panels = [badPanel, lensTypeAByValue]; + expect(collectorData.panels.by_type.lens.total).toBe(panels.length); + expect(collectorData.panels.by_type.lens.by_value).toBe(6); + expect(collectorData.panels.by_type.lens.by_reference).toBe(1); + }); - const collectorData = getEmptyTelemetryData(); + it('collects information about a mix of panel types', () => { + const panels = [ + visualizationType1ByValue, + visualizationType1ByValue, + visualizationType2ByReference, + lensTypeAByValue, + lensTypeAByValue, + lensTypeAByValue, + lensTypeAByReference, + lensXYSeriesA, + ]; - collectByValueLensInfo(panels, collectorData); + const collectorData = getEmptyDashboardData(); + collectPanelsByType(panels, collectorData, embeddablePersistableStateService); - expect(collectorData.lensByValue.a).toBe(1); - }); + expect(collectorData.panels.total).toBe(panels.length); + expect(collectorData.panels.by_type.lens.total).toBe(5); + expect(collectorData.panels.by_type.lens.by_value).toBe(4); + expect(collectorData.panels.by_type.lens.by_reference).toBe(1); + expect(collectorData.panels.by_type.visualization.total).toBe(3); + expect(collectorData.panels.by_type.visualization.by_value).toBe(2); + expect(collectorData.panels.by_type.visualization.by_reference).toBe(1); }); }); diff --git a/src/plugins/dashboard/server/usage/dashboard_telemetry.ts b/src/plugins/dashboard/server/usage/dashboard_telemetry.ts index 3eb29bf1531c4..9f0c5e19fcd0e 100644 --- a/src/plugins/dashboard/server/usage/dashboard_telemetry.ts +++ b/src/plugins/dashboard/server/usage/dashboard_telemetry.ts @@ -10,151 +10,70 @@ import { ISavedObjectsRepository, SavedObjectAttributes } from '@kbn/core/server import { EmbeddablePersistableStateService } from '@kbn/embeddable-plugin/common'; import { SavedDashboardPanel730ToLatest } from '../../common'; import { injectReferences } from '../../common/saved_dashboard_references'; - -interface VisualizationPanel extends SavedDashboardPanel730ToLatest { - embeddableConfig: { - savedVis?: { - type?: string; - }; - }; -} - -interface LensPanel extends SavedDashboardPanel730ToLatest { - embeddableConfig: { - attributes?: { - visualizationType?: string; - state?: { - visualization?: { - preferredSeriesType?: string; - }; - datasourceStates?: { - indexpattern?: { - layers: Record< - string, - { - columns: Record; - } - >; - }; +export interface DashboardCollectorData { + panels: { + total: number; + by_reference: number; + by_value: number; + by_type: { + [key: string]: { + total: number; + by_reference: number; + by_value: number; + details: { + [key: string]: number; }; }; }; }; } -export interface DashboardCollectorData { - panels: number; - panelsByValue: number; - lensByValue: { - [key: string]: number; - }; - visualizationByValue: { - [key: string]: number; - }; - embeddable: { - [key: string]: number; - }; -} - -export const getEmptyTelemetryData = (): DashboardCollectorData => ({ - panels: 0, - panelsByValue: 0, - lensByValue: {}, - visualizationByValue: {}, - embeddable: {}, +export const getEmptyDashboardData = (): DashboardCollectorData => ({ + panels: { + total: 0, + by_reference: 0, + by_value: 0, + by_type: {}, + }, }); -type DashboardCollectorFunction = ( - panels: SavedDashboardPanel730ToLatest[], - collectorData: DashboardCollectorData -) => void; - -export const collectDashboardInfo: DashboardCollectorFunction = (panels, collectorData) => { - collectorData.panels += panels.length; - collectorData.panelsByValue += panels.filter((panel) => panel.id === undefined).length; -}; - -export const collectByValueVisualizationInfo: DashboardCollectorFunction = ( - panels, - collectorData -) => { - const byValueVisualizations = panels.filter( - (panel) => panel.id === undefined && panel.type === 'visualization' - ); - - for (const panel of byValueVisualizations) { - const visPanel = panel as VisualizationPanel; - - if ( - visPanel.embeddableConfig.savedVis !== undefined && - visPanel.embeddableConfig.savedVis.type !== undefined - ) { - const type = visPanel.embeddableConfig.savedVis.type; - - if (!collectorData.visualizationByValue[type]) { - collectorData.visualizationByValue[type] = 0; - } - - collectorData.visualizationByValue[type] = collectorData.visualizationByValue[type] + 1; - } - } -}; - -export const collectByValueLensInfo: DashboardCollectorFunction = (panels, collectorData) => { - const byValueLens = panels.filter((panel) => panel.id === undefined && panel.type === 'lens'); - - for (const panel of byValueLens) { - const lensPanel = panel as LensPanel; - - if (lensPanel.embeddableConfig.attributes?.visualizationType !== undefined) { - let type = lensPanel.embeddableConfig.attributes.visualizationType; - - if (type === 'lnsXY') { - type = - lensPanel.embeddableConfig.attributes.state?.visualization?.preferredSeriesType || type; - } - - if (!collectorData.lensByValue[type]) { - collectorData.lensByValue[type] = 0; - } - - collectorData.lensByValue[type] = collectorData.lensByValue[type] + 1; - - const hasFormula = Object.values( - lensPanel.embeddableConfig.attributes.state?.datasourceStates?.indexpattern?.layers || {} - ).some((layer) => - Object.values(layer.columns).some((column) => column.operationType === 'formula') - ); - - if (hasFormula && !collectorData.lensByValue.formula) { - collectorData.lensByValue.formula = 0; - } - if (hasFormula) { - collectorData.lensByValue.formula++; - } - } - } -}; - -export const collectForPanels: DashboardCollectorFunction = (panels, collectorData) => { - collectDashboardInfo(panels, collectorData); - collectByValueVisualizationInfo(panels, collectorData); - collectByValueLensInfo(panels, collectorData); -}; +export const getEmptyPanelTypeData = () => ({ + total: 0, + by_reference: 0, + by_value: 0, + details: {}, +}); -export const collectEmbeddableData = ( +export const collectPanelsByType = ( panels: SavedDashboardPanel730ToLatest[], collectorData: DashboardCollectorData, embeddableService: EmbeddablePersistableStateService ) => { + collectorData.panels.total += panels.length; + for (const panel of panels) { - collectorData.embeddable = embeddableService.telemetry( + const type = panel.type; + if (!collectorData.panels.by_type[type]) { + collectorData.panels.by_type[type] = getEmptyPanelTypeData(); + } + collectorData.panels.by_type[type].total += 1; + if (panel.id === undefined) { + collectorData.panels.by_value += 1; + collectorData.panels.by_type[type].by_value += 1; + } else { + collectorData.panels.by_reference += 1; + collectorData.panels.by_type[type].by_reference += 1; + } + // the following "details" need a follow-up that will actually properly consolidate + // the data from all embeddables - right now, the only data that is kept is the + // telemetry for the **final** embeddable of that type + collectorData.panels.by_type[type].details = embeddableService.telemetry( { ...panel.embeddableConfig, id: panel.id || '', type: panel.type, }, - collectorData.embeddable + collectorData.panels.by_type[type].details ); } }; @@ -163,7 +82,7 @@ export async function collectDashboardTelemetry( savedObjectClient: Pick, embeddableService: EmbeddablePersistableStateService ) { - const collectorData = getEmptyTelemetryData(); + const collectorData = getEmptyDashboardData(); const dashboards = await savedObjectClient.find({ type: 'dashboard', }); @@ -177,8 +96,7 @@ export async function collectDashboardTelemetry( attributes.panelsJSON as string ) as unknown as SavedDashboardPanel730ToLatest[]; - collectForPanels(panels, collectorData); - collectEmbeddableData(panels, collectorData, embeddableService); + collectPanelsByType(panels, collectorData, embeddableService); } return collectorData; diff --git a/src/plugins/dashboard/server/usage/register_collector.ts b/src/plugins/dashboard/server/usage/register_collector.ts index 3ec327172c059..7c77dd1473d85 100644 --- a/src/plugins/dashboard/server/usage/register_collector.ts +++ b/src/plugins/dashboard/server/usage/register_collector.ts @@ -22,32 +22,41 @@ export function registerDashboardUsageCollector( return await collectDashboardTelemetry(soClient, embeddableService); }, schema: { - panels: { type: 'long' }, - panelsByValue: { type: 'long' }, - lensByValue: { - DYNAMIC_KEY: { - type: 'long', - _meta: { - description: - 'Collection of telemetry metrics for Lens visualizations, which are added to dashboard by "value".', - }, - }, - }, - visualizationByValue: { - DYNAMIC_KEY: { - type: 'long', - _meta: { - description: - 'Collection of telemetry metrics for visualizations, which are added to dashboard by "value".', - }, - }, - }, - embeddable: { - DYNAMIC_KEY: { - type: 'long', - _meta: { - description: - 'Collection of telemetry metrics that embeddable service reports. Embeddable service internally calls each embeddable, which in turn calls its dynamic actions, which calls each drill down attached to that embeddable.', + panels: { + total: { type: 'long' }, + by_reference: { type: 'long' }, + by_value: { type: 'long' }, + by_type: { + DYNAMIC_KEY: { + total: { + type: 'long', + _meta: { + description: 'The number of panels that have been added to all dashboards.', + }, + }, + by_reference: { + type: 'long', + _meta: { + description: + 'The number of "by reference" panels that have been added to all dashboards.', + }, + }, + by_value: { + type: 'long', + _meta: { + description: + 'The number of "by value" panels that have been added to all dashboards.', + }, + }, + details: { + DYNAMIC_KEY: { + type: 'long', + _meta: { + description: + 'Collection of telemetry metrics that embeddable service reports. Embeddable service internally calls each embeddable, which in turn calls its dynamic actions, which calls each drill down attached to that embeddable.', + }, + }, + }, }, }, }, diff --git a/src/plugins/telemetry/schema/oss_plugins.json b/src/plugins/telemetry/schema/oss_plugins.json index c6a237ee2b09c..7e8e570993102 100644 --- a/src/plugins/telemetry/schema/oss_plugins.json +++ b/src/plugins/telemetry/schema/oss_plugins.json @@ -3,37 +3,50 @@ "dashboard": { "properties": { "panels": { - "type": "long" - }, - "panelsByValue": { - "type": "long" - }, - "lensByValue": { "properties": { - "DYNAMIC_KEY": { - "type": "long", - "_meta": { - "description": "Collection of telemetry metrics for Lens visualizations, which are added to dashboard by \"value\"." - } - } - } - }, - "visualizationByValue": { - "properties": { - "DYNAMIC_KEY": { - "type": "long", - "_meta": { - "description": "Collection of telemetry metrics for visualizations, which are added to dashboard by \"value\"." - } - } - } - }, - "embeddable": { - "properties": { - "DYNAMIC_KEY": { - "type": "long", - "_meta": { - "description": "Collection of telemetry metrics that embeddable service reports. Embeddable service internally calls each embeddable, which in turn calls its dynamic actions, which calls each drill down attached to that embeddable." + "total": { + "type": "long" + }, + "by_reference": { + "type": "long" + }, + "by_value": { + "type": "long" + }, + "by_type": { + "properties": { + "DYNAMIC_KEY": { + "properties": { + "total": { + "type": "long", + "_meta": { + "description": "The number of panels that have been added to all dashboards." + } + }, + "by_reference": { + "type": "long", + "_meta": { + "description": "The number of \"by reference\" panels that have been added to all dashboards." + } + }, + "by_value": { + "type": "long", + "_meta": { + "description": "The number of \"by value\" panels that have been added to all dashboards." + } + }, + "details": { + "properties": { + "DYNAMIC_KEY": { + "type": "long", + "_meta": { + "description": "Collection of telemetry metrics that embeddable service reports. Embeddable service internally calls each embeddable, which in turn calls its dynamic actions, which calls each drill down attached to that embeddable." + } + } + } + } + } + } } } } From 320df4b79aed93ad1b93c97077bbbfd2da0b4033 Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Tue, 19 Apr 2022 17:41:19 -0400 Subject: [PATCH 21/25] [Uptime] update monitor management tour content (#130601) * uptime - update monitor management tour content * update tests * update styling * adjust tests --- x-pack/plugins/uptime/e2e/journeys/utils.ts | 2 +- .../plugins/uptime/e2e/page_objects/login.tsx | 2 +- .../common/header/manage_monitors_btn.tsx | 57 ++++++++++++++----- .../service_allowed_wrapper.tsx | 4 +- 4 files changed, 47 insertions(+), 18 deletions(-) diff --git a/x-pack/plugins/uptime/e2e/journeys/utils.ts b/x-pack/plugins/uptime/e2e/journeys/utils.ts index d63d09332a019..2bd7219f5867b 100644 --- a/x-pack/plugins/uptime/e2e/journeys/utils.ts +++ b/x-pack/plugins/uptime/e2e/journeys/utils.ts @@ -31,7 +31,7 @@ export async function loginToKibana({ await waitForLoadingToFinish({ page }); // Close Monitor Management tour added in 8.2.0 - await page.click('text=Close tour'); + await page.click('[data-test-subj=syntheticsManagementTourDismiss]'); } export const byTestId = (testId: string) => { diff --git a/x-pack/plugins/uptime/e2e/page_objects/login.tsx b/x-pack/plugins/uptime/e2e/page_objects/login.tsx index 116128d4fe7d1..ae52bb45ddb84 100644 --- a/x-pack/plugins/uptime/e2e/page_objects/login.tsx +++ b/x-pack/plugins/uptime/e2e/page_objects/login.tsx @@ -38,7 +38,7 @@ export function loginPageProvider({ await this.waitForLoadingToFinish(); // Close Monitor Management tour added in 8.2.0 try { - await page.click('text=Close tour'); + await page.click('[data-test-subj=syntheticsManagementTourDismiss]'); } catch (e) { return; } diff --git a/x-pack/plugins/uptime/public/components/common/header/manage_monitors_btn.tsx b/x-pack/plugins/uptime/public/components/common/header/manage_monitors_btn.tsx index 433e6f7b574f4..5cc489fe4d7a4 100644 --- a/x-pack/plugins/uptime/public/components/common/header/manage_monitors_btn.tsx +++ b/x-pack/plugins/uptime/public/components/common/header/manage_monitors_btn.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { EuiHeaderLink, EuiTourStep, EuiText } from '@elastic/eui'; +import { EuiButton, EuiHeaderLink, EuiLink, EuiSpacer, EuiTourStep, EuiText } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import React from 'react'; @@ -27,6 +27,11 @@ export const ManageMonitorsBtn = () => { const { isDev } = useUptimeSettingsContext(); + const handleOnClick = () => { + setIsOpen(false); + history.push(MONITOR_MANAGEMENT_ROUTE + '/all'); + }; + if (!cloud?.isCloudEnabled && !isDev) { return null; } @@ -34,27 +39,35 @@ export const ManageMonitorsBtn = () => { return ( -

{PUBLIC_BETA_DESCRIPTION}

- + <> + +

{PUBLIC_BETA_DESCRIPTION}

+
+ + + {MONITOR_MANAGEMENT_LABEL} + + } isStepOpen={isOpen} - minWidth={300} onFinish={() => setIsOpen(false)} step={1} stepsTotal={1} - title={MONITOR_MANAGEMENT_LABEL} + subtitle={NEW_LABEL} + title={GETTING_STARTED_LABEL} anchorPosition="upCenter" + maxWidth={416} + footerAction={ + setIsOpen(false)}> + {DISMISS_LABEL} + + } > { ); }; +const GETTING_STARTED_LABEL = i18n.translate( + 'xpack.uptime.monitorManagement.gettingStarted.label', + { + defaultMessage: 'Get started with Synthetic Monitoring', + } +); + const MONITOR_MANAGEMENT_LABEL = i18n.translate('xpack.uptime.monitorManagement.try.label', { defaultMessage: 'Try Monitor Management', }); +const DISMISS_LABEL = i18n.translate('xpack.uptime.monitorManagement.try.dismiss', { + defaultMessage: 'Dismiss', +}); + +const NAVIGATE_LABEL = i18n.translate('xpack.uptime.page_header.manageLink.label', { + defaultMessage: 'Navigate to the Uptime Monitor Management page', +}); + +const NEW_LABEL = i18n.translate('xpack.uptime.monitorManagement.new.label', { + defaultMessage: 'New', +}); diff --git a/x-pack/plugins/uptime/public/pages/monitor_management/service_allowed_wrapper.tsx b/x-pack/plugins/uptime/public/pages/monitor_management/service_allowed_wrapper.tsx index 1c129ce74d958..4869b28495183 100644 --- a/x-pack/plugins/uptime/public/pages/monitor_management/service_allowed_wrapper.tsx +++ b/x-pack/plugins/uptime/public/pages/monitor_management/service_allowed_wrapper.tsx @@ -59,8 +59,6 @@ export const PUBLIC_BETA_DESCRIPTION = i18n.translate( 'xpack.uptime.monitorManagement.publicBetaDescription', { defaultMessage: - 'Monitor management is available only for selected public beta users. With public\n' + - 'beta access, you will be able to add HTTP, TCP, ICMP and Browser checks which will\n' + - "run on Elastic's managed Synthetics service nodes.", + "We've got a brand new app on the way. In the meantime, we're excited to give you early access to our globally managed testing infrastructure. This will allow you to upload synthetic monitors using our new point and click script recorder and manage your monitors with a new UI.", } ); From a9a6df31869dc83409f56ffc8a251fd5143d719e Mon Sep 17 00:00:00 2001 From: Brian Seeders Date: Tue, 19 Apr 2022 18:45:30 -0400 Subject: [PATCH 22/25] [CI] Move detection engine create exceptions tests to ciGroup14 (#130623) --- .../security_and_spaces/tests/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts index 891d282b2f980..a6d052a22bee6 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/tests/index.ts @@ -25,7 +25,6 @@ export default ({ loadTestFile }: FtrProviderContext): void => { loadTestFile(require.resolve('./create_rules_bulk')); loadTestFile(require.resolve('./create_ml')); loadTestFile(require.resolve('./create_threat_matching')); - loadTestFile(require.resolve('./create_exceptions')); loadTestFile(require.resolve('./delete_rules')); loadTestFile(require.resolve('./delete_rules_bulk')); loadTestFile(require.resolve('./export_rules')); @@ -55,6 +54,12 @@ export default ({ loadTestFile }: FtrProviderContext): void => { loadTestFile(require.resolve('./migrations')); }); + describe('', function () { + this.tags('ciGroup14'); + + loadTestFile(require.resolve('./create_exceptions')); + }); + // That split here enable us on using a different ciGroup to run the tests // listed on ./exception_operators_data_types/index describe('', function () { From 9430e41eb29640692d2d60ee93178726fdc356b4 Mon Sep 17 00:00:00 2001 From: Tiago Costa Date: Wed, 20 Apr 2022 00:39:57 +0100 Subject: [PATCH 23/25] fix(NA): removes carriage return character when reading bazel tools cersion file on Windows (#130572) * fix(NA): use correct rule on yarn_install force at @kbn/pm * fix(NA): removes carriage return character when reading bazel tools cersion file on Windows * chore(NA): only use trim() * chore(NA): update @kbn/pm dist * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- packages/kbn-pm/dist/index.js | 2 +- packages/kbn-pm/src/utils/bazel/install_tools.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 8e99101ed76ff..293b82253abc2 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -87444,7 +87444,7 @@ async function getBazelRepositoryCacheFolder() { async function readBazelToolsVersionFile(repoRootPath, versionFilename) { - const version = (await Object(_fs__WEBPACK_IMPORTED_MODULE_3__[/* readFile */ "f"])(Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(repoRootPath, versionFilename))).toString().split('\n')[0]; + const version = (await Object(_fs__WEBPACK_IMPORTED_MODULE_3__[/* readFile */ "f"])(Object(path__WEBPACK_IMPORTED_MODULE_1__["resolve"])(repoRootPath, versionFilename))).toString().trim(); if (!version) { throw new Error(`[bazel_tools] Failed on reading bazel tools versions\n ${versionFilename} file do not contain any version set`); diff --git a/packages/kbn-pm/src/utils/bazel/install_tools.ts b/packages/kbn-pm/src/utils/bazel/install_tools.ts index 05b71f6a868d4..e5d07748fdccf 100644 --- a/packages/kbn-pm/src/utils/bazel/install_tools.ts +++ b/packages/kbn-pm/src/utils/bazel/install_tools.ts @@ -13,9 +13,7 @@ import { readFile } from '../fs'; import { log } from '../log'; async function readBazelToolsVersionFile(repoRootPath: string, versionFilename: string) { - const version = (await readFile(resolve(repoRootPath, versionFilename))) - .toString() - .split('\n')[0]; + const version = (await readFile(resolve(repoRootPath, versionFilename))).toString().trim(); if (!version) { throw new Error( From 9ed9c02bae10a2cf0794779995ff0a16ea4329d8 Mon Sep 17 00:00:00 2001 From: Spencer Date: Tue, 19 Apr 2022 20:43:01 -0500 Subject: [PATCH 24/25] [kbn/pm] reduce responsibilities (#130592) * [kbn/pm] reduce responsibilities * [CI] Auto-commit changed files from 'node scripts/generate packages_build_manifest' * [CI] Auto-commit changed files from 'yarn kbn run build -i @kbn/pm' Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> --- .github/CODEOWNERS | 1 + package.json | 2 + packages/BUILD.bazel | 2 + .../kbn-bazel-packages/src/bazel_package.ts | 7 + .../src/parse_package_json.ts | 24 +- packages/kbn-bazel-runner/BUILD.bazel | 122 + packages/kbn-bazel-runner/README.md | 3 + packages/kbn-bazel-runner/jest.config.js | 13 + packages/kbn-bazel-runner/package.json | 10 + packages/kbn-bazel-runner/src/bazel_runner.ts | 76 + .../src}/index.ts | 3 +- packages/kbn-bazel-runner/tsconfig.json | 17 + packages/kbn-dev-utils/BUILD.bazel | 2 +- packages/kbn-pm/dist/index.js | 88378 ++++++---------- packages/kbn-pm/src/commands/bootstrap.ts | 66 +- packages/kbn-pm/src/commands/build.ts | 11 +- packages/kbn-pm/src/commands/clean.ts | 8 +- packages/kbn-pm/src/commands/reset.ts | 8 +- packages/kbn-pm/src/commands/watch.ts | 12 +- packages/kbn-pm/src/index.ts | 2 - .../with_kibana_link_deps/package.json | 7 - .../with_other_link_deps/package.json | 7 - .../build_bazel_production_projects.ts | 105 - .../build_non_bazel_production_projects.ts | 139 - packages/kbn-pm/src/utils/bazel/index.ts | 1 - packages/kbn-pm/src/utils/bazel/run.ts | 79 - packages/kbn-pm/src/utils/package_json.ts | 41 - packages/kbn-pm/src/utils/project.test.ts | 25 - packages/kbn-pm/src/utils/project.ts | 20 +- packages/kbn-pm/src/utils/scripts.ts | 19 - src/dev/build/build_distributables.ts | 2 +- src/dev/build/lib/scan_copy.ts | 83 +- src/dev/build/tasks/build_packages_task.ts | 96 +- src/dev/build/tasks/copy_source_task.ts | 5 + .../build/tasks/install_dependencies_task.ts | 25 +- .../package_json/create_package_json_tasks.ts | 31 +- x-pack/package.json | 1 - yarn.lock | 8 + 38 files changed, 31108 insertions(+), 58353 deletions(-) create mode 100644 packages/kbn-bazel-runner/BUILD.bazel create mode 100644 packages/kbn-bazel-runner/README.md create mode 100644 packages/kbn-bazel-runner/jest.config.js create mode 100644 packages/kbn-bazel-runner/package.json create mode 100644 packages/kbn-bazel-runner/src/bazel_runner.ts rename packages/{kbn-pm/src/production => kbn-bazel-runner/src}/index.ts (67%) create mode 100644 packages/kbn-bazel-runner/tsconfig.json delete mode 100644 packages/kbn-pm/src/production/__fixtures__/external_packages/with_kibana_link_deps/package.json delete mode 100644 packages/kbn-pm/src/production/__fixtures__/external_packages/with_other_link_deps/package.json delete mode 100644 packages/kbn-pm/src/production/build_bazel_production_projects.ts delete mode 100644 packages/kbn-pm/src/production/build_non_bazel_production_projects.ts delete mode 100644 packages/kbn-pm/src/utils/bazel/run.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f1df9a6a46a6f..5e844da245571 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -220,6 +220,7 @@ /packages/kbn-ambient-ui-types/ @elastic/kibana-operations /packages/kbn-ambient-storybook-types/ @elastic/kibana-operations /packages/kbn-bazel-packages/ @elastic/kibana-operations +/packages/kbn-bazel-runner/ @elastic/kibana-operations /packages/kbn-cli-dev-mode/ @elastic/kibana-operations /packages/kbn-dev-utils*/ @elastic/kibana-operations /packages/kbn-es-archiver/ @elastic/kibana-operations diff --git a/package.json b/package.json index fe963c1ea76ae..70d1a37d6d3c5 100644 --- a/package.json +++ b/package.json @@ -481,6 +481,7 @@ "@kbn/babel-plugin-synthetic-packages": "link:bazel-bin/packages/kbn-babel-plugin-synthetic-packages", "@kbn/babel-preset": "link:bazel-bin/packages/kbn-babel-preset", "@kbn/bazel-packages": "link:bazel-bin/packages/kbn-bazel-packages", + "@kbn/bazel-runner": "link:bazel-bin/packages/kbn-bazel-runner", "@kbn/ci-stats-client": "link:bazel-bin/packages/kbn-ci-stats-client", "@kbn/ci-stats-core": "link:bazel-bin/packages/kbn-ci-stats-core", "@kbn/ci-stats-reporter": "link:bazel-bin/packages/kbn-ci-stats-reporter", @@ -607,6 +608,7 @@ "@types/kbn__apm-utils": "link:bazel-bin/packages/kbn-apm-utils/npm_module_types", "@types/kbn__axe-config": "link:bazel-bin/packages/kbn-axe-config/npm_module_types", "@types/kbn__bazel-packages": "link:bazel-bin/packages/kbn-bazel-packages/npm_module_types", + "@types/kbn__bazel-runner": "link:bazel-bin/packages/kbn-bazel-runner/npm_module_types", "@types/kbn__ci-stats-client": "link:bazel-bin/packages/kbn-ci-stats-client/npm_module_types", "@types/kbn__ci-stats-core": "link:bazel-bin/packages/kbn-ci-stats-core/npm_module_types", "@types/kbn__ci-stats-reporter": "link:bazel-bin/packages/kbn-ci-stats-reporter/npm_module_types", diff --git a/packages/BUILD.bazel b/packages/BUILD.bazel index de953cfd93af0..0b525936aed7e 100644 --- a/packages/BUILD.bazel +++ b/packages/BUILD.bazel @@ -24,6 +24,7 @@ filegroup( "//packages/kbn-babel-plugin-synthetic-packages:build", "//packages/kbn-babel-preset:build", "//packages/kbn-bazel-packages:build", + "//packages/kbn-bazel-runner:build", "//packages/kbn-ci-stats-client:build", "//packages/kbn-ci-stats-core:build", "//packages/kbn-ci-stats-reporter:build", @@ -121,6 +122,7 @@ filegroup( "//packages/kbn-apm-utils:build_types", "//packages/kbn-axe-config:build_types", "//packages/kbn-bazel-packages:build_types", + "//packages/kbn-bazel-runner:build_types", "//packages/kbn-ci-stats-client:build_types", "//packages/kbn-ci-stats-core:build_types", "//packages/kbn-ci-stats-reporter:build_types", diff --git a/packages/kbn-bazel-packages/src/bazel_package.ts b/packages/kbn-bazel-packages/src/bazel_package.ts index 492ce05cf04bf..930eed591a853 100644 --- a/packages/kbn-bazel-packages/src/bazel_package.ts +++ b/packages/kbn-bazel-packages/src/bazel_package.ts @@ -70,6 +70,13 @@ export class BazelPackage { return !!(this.buildBazelContent && BUILD_TYPES_RULE_NAME.test(this.buildBazelContent)); } + /** + * Returns true if the package is not intended to be in the build + */ + isDevOnly() { + return !!this.pkg.kibana?.devOnly; + } + /** * Custom inspect handler so that logging variables in scripts/generate doesn't * print all the BUILD.bazel files diff --git a/packages/kbn-bazel-packages/src/parse_package_json.ts b/packages/kbn-bazel-packages/src/parse_package_json.ts index b213c7c8596b0..c3ad446b66823 100644 --- a/packages/kbn-bazel-packages/src/parse_package_json.ts +++ b/packages/kbn-bazel-packages/src/parse_package_json.ts @@ -13,17 +13,18 @@ import Fs from 'fs'; * by `assertParsedPackageJson()` and extensible as needed in the future */ export interface ParsedPackageJson { - /** - * The name of the package, usually `@kbn/`+something - */ + /** The name of the package, usually `@kbn/`+something */ name: string; /** "dependenices" property from package.json */ dependencies?: Record; /** "devDependenices" property from package.json */ devDependencies?: Record; - /** - * All other fields in the package.json are typed as unknown as we don't care what they are - */ + /** Some kibana specific properties about this package */ + kibana?: { + /** Is this package only intended for dev? */ + devOnly?: boolean; + }; + /** All other fields in the package.json are typed as unknown as we don't care what they are */ [key: string]: unknown; } @@ -46,6 +47,17 @@ export function assertParsedPackageJson(v: unknown): asserts v is ParsedPackageJ if (v.devDependencies && !isObj(v.devDependencies)) { throw new Error('Expected "dependencies" to be an object'); } + + const kibana = v.kibana; + if (kibana !== undefined) { + if (!isObj(kibana)) { + throw new Error('Expected "kibana" field in package.json to be an object'); + } + + if (kibana.devOnly !== undefined && typeof kibana.devOnly !== 'boolean') { + throw new Error('Expected "kibana.devOnly" field in package.json to be a boolean'); + } + } } /** diff --git a/packages/kbn-bazel-runner/BUILD.bazel b/packages/kbn-bazel-runner/BUILD.bazel new file mode 100644 index 0000000000000..ace7e0f9c7662 --- /dev/null +++ b/packages/kbn-bazel-runner/BUILD.bazel @@ -0,0 +1,122 @@ +load("@npm//@bazel/typescript:index.bzl", "ts_config") +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("//src/dev/bazel:index.bzl", "jsts_transpiler", "pkg_npm", "pkg_npm_types", "ts_project") + +PKG_DIRNAME = "kbn-bazel-runner" +PKG_REQUIRE_NAME = "@kbn/bazel-runner" + +SOURCE_FILES = glob( + [ + "src/**/*.ts", + ], + exclude = [ + "**/*.test.*", + ], +) + +SRCS = SOURCE_FILES + +filegroup( + name = "srcs", + srcs = SRCS, +) + +NPM_MODULE_EXTRA_FILES = [ + "package.json", +] + +# In this array place runtime dependencies, including other packages and NPM packages +# which must be available for this code to run. +# +# To reference other packages use: +# "//repo/relative/path/to/package" +# eg. "//packages/kbn-utils" +# +# To reference a NPM package use: +# "@npm//name-of-package" +# eg. "@npm//lodash" +RUNTIME_DEPS = [ + "@npm//execa", + "@npm//chalk", + "@npm//rxjs", + "//packages/kbn-dev-utils", +] + +# In this array place dependencies necessary to build the types, which will include the +# :npm_module_types target of other packages and packages from NPM, including @types/* +# packages. +# +# To reference the types for another package use: +# "//repo/relative/path/to/package:npm_module_types" +# eg. "//packages/kbn-utils:npm_module_types" +# +# References to NPM packages work the same as RUNTIME_DEPS +TYPES_DEPS = [ + "@npm//@types/node", + "@npm//@types/jest", + "@npm//execa", + "@npm//chalk", + "@npm//rxjs", + "//packages/kbn-dev-utils:npm_module_types", +] + +jsts_transpiler( + name = "target_node", + srcs = SRCS, + build_pkg_name = package_name(), +) + +ts_config( + name = "tsconfig", + src = "tsconfig.json", + deps = [ + "//:tsconfig.base.json", + "//:tsconfig.bazel.json", + ], +) + +ts_project( + name = "tsc_types", + args = ['--pretty'], + srcs = SRCS, + deps = TYPES_DEPS, + declaration = True, + emit_declaration_only = True, + out_dir = "target_types", + root_dir = "src", + tsconfig = ":tsconfig", +) + +js_library( + name = PKG_DIRNAME, + srcs = NPM_MODULE_EXTRA_FILES, + deps = RUNTIME_DEPS + [":target_node"], + package_name = PKG_REQUIRE_NAME, + visibility = ["//visibility:public"], +) + +pkg_npm( + name = "npm_module", + deps = [":" + PKG_DIRNAME], +) + +filegroup( + name = "build", + srcs = [":npm_module"], + visibility = ["//visibility:public"], +) + +pkg_npm_types( + name = "npm_module_types", + srcs = SRCS, + deps = [":tsc_types"], + package_name = PKG_REQUIRE_NAME, + tsconfig = ":tsconfig", + visibility = ["//visibility:public"], +) + +filegroup( + name = "build_types", + srcs = [":npm_module_types"], + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-bazel-runner/README.md b/packages/kbn-bazel-runner/README.md new file mode 100644 index 0000000000000..690caf33e45ba --- /dev/null +++ b/packages/kbn-bazel-runner/README.md @@ -0,0 +1,3 @@ +# @kbn/bazel-runner + +Helpers for running bazel commands, used everywhere we programatically run bazel. \ No newline at end of file diff --git a/packages/kbn-bazel-runner/jest.config.js b/packages/kbn-bazel-runner/jest.config.js new file mode 100644 index 0000000000000..4d4f77a8f43f3 --- /dev/null +++ b/packages/kbn-bazel-runner/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../..', + roots: ['/packages/kbn-bazel-runner'], +}; diff --git a/packages/kbn-bazel-runner/package.json b/packages/kbn-bazel-runner/package.json new file mode 100644 index 0000000000000..d8fe010f0e4c3 --- /dev/null +++ b/packages/kbn-bazel-runner/package.json @@ -0,0 +1,10 @@ +{ + "name": "@kbn/bazel-runner", + "private": true, + "version": "1.0.0", + "main": "./target_node/index.js", + "license": "SSPL-1.0 OR Elastic License 2.0", + "kibana": { + "devOnly": true + } +} diff --git a/packages/kbn-bazel-runner/src/bazel_runner.ts b/packages/kbn-bazel-runner/src/bazel_runner.ts new file mode 100644 index 0000000000000..a07ec35285872 --- /dev/null +++ b/packages/kbn-bazel-runner/src/bazel_runner.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import chalk from 'chalk'; +import execa from 'execa'; +import * as Rx from 'rxjs'; +import { tap } from 'rxjs/operators'; +import { ToolingLog } from '@kbn/tooling-log'; +import { observeLines } from '@kbn/stdio-dev-helpers'; + +type BazelCommandRunner = 'bazel' | 'ibazel'; + +interface BazelRunOptions { + log: ToolingLog; + bazelArgs: string[]; + offline?: boolean; + execaOpts?: execa.Options; +} + +async function runBazelCommandWithRunner(runner: BazelCommandRunner, options: BazelRunOptions) { + const bazelProc = execa( + runner, + options.offline ? [...options.bazelArgs, '--config=offline'] : options.bazelArgs, + { + ...options.execaOpts, + stdio: 'pipe', + preferLocal: true, + } + ); + + await Promise.all([ + // Bazel outputs machine readable output into stdout and human readable output goes to stderr. + // Therefore we need to get both. In order to get errors we need to parse the actual text line + Rx.lastValueFrom( + Rx.merge( + observeLines(bazelProc.stdout!).pipe( + tap((line) => options.log.info(`${chalk.cyan(`[${runner}]`)} ${line}`)) + ), + observeLines(bazelProc.stderr!).pipe( + tap((line) => options.log.info(`${chalk.cyan(`[${runner}]`)} ${line}`)) + ) + ).pipe(Rx.defaultIfEmpty(undefined)) + ), + + // Wait for process and logs to finish, unsubscribing in the end + bazelProc.catch(() => { + options.log.error( + 'HINT: If experiencing problems with node_modules try `yarn kbn bootstrap --force-install` or as last resort `yarn kbn reset && yarn kbn bootstrap`' + ); + + throw new Error(`The bazel command that was running failed to complete.`); + }), + ]); +} + +export async function runBazel(options: BazelRunOptions) { + await runBazelCommandWithRunner('bazel', options); +} + +export async function runIBazel(options: BazelRunOptions) { + await runBazelCommandWithRunner('ibazel', { + ...options, + execaOpts: { + ...options.execaOpts, + env: { + ...options.execaOpts?.env, + IBAZEL_USE_LEGACY_WATCHER: '0', + }, + }, + }); +} diff --git a/packages/kbn-pm/src/production/index.ts b/packages/kbn-bazel-runner/src/index.ts similarity index 67% rename from packages/kbn-pm/src/production/index.ts rename to packages/kbn-bazel-runner/src/index.ts index 9083eae61da2a..fb88a9744f522 100644 --- a/packages/kbn-pm/src/production/index.ts +++ b/packages/kbn-bazel-runner/src/index.ts @@ -6,5 +6,4 @@ * Side Public License, v 1. */ -export { buildBazelProductionProjects } from './build_bazel_production_projects'; -export { buildNonBazelProductionProjects } from './build_non_bazel_production_projects'; +export * from './bazel_runner'; diff --git a/packages/kbn-bazel-runner/tsconfig.json b/packages/kbn-bazel-runner/tsconfig.json new file mode 100644 index 0000000000000..a8cfc2cceb08b --- /dev/null +++ b/packages/kbn-bazel-runner/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tsconfig.bazel.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "outDir": "target_types", + "rootDir": "src", + "stripInternal": false, + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*" + ] +} diff --git a/packages/kbn-dev-utils/BUILD.bazel b/packages/kbn-dev-utils/BUILD.bazel index 8138ff946fc29..5513aff23f15a 100644 --- a/packages/kbn-dev-utils/BUILD.bazel +++ b/packages/kbn-dev-utils/BUILD.bazel @@ -36,7 +36,7 @@ filegroup( NPM_MODULE_EXTRA_FILES = [ "package.json", "README.md", - ":certs" + ":certs", ] RUNTIME_DEPS = [ diff --git a/packages/kbn-pm/dist/index.js b/packages/kbn-pm/dist/index.js index 293b82253abc2..32171e030d91a 100644 --- a/packages/kbn-pm/dist/index.js +++ b/packages/kbn-pm/dist/index.js @@ -1346,6 +1346,98 @@ module.exports = _interopRequireDefault, module.exports.__esModule = true, modul /***/ }), +/***/ "../../node_modules/@kbn/bazel-runner/target_node/bazel_runner.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _interopRequireDefault = __webpack_require__("../../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.runBazel = runBazel; +exports.runIBazel = runIBazel; + +var _chalk = _interopRequireDefault(__webpack_require__("../../node_modules/chalk/source/index.js")); + +var _execa = _interopRequireDefault(__webpack_require__("../../node_modules/execa/index.js")); + +var Rx = _interopRequireWildcard(__webpack_require__("../../node_modules/rxjs/dist/esm5/index.js")); + +var _operators = __webpack_require__("../../node_modules/rxjs/dist/esm5/operators/index.js"); + +var _stdioDevHelpers = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/index.js"); + +function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } + +function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } + +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +async function runBazelCommandWithRunner(runner, options) { + const bazelProc = (0, _execa.default)(runner, options.offline ? [...options.bazelArgs, '--config=offline'] : options.bazelArgs, { ...options.execaOpts, + stdio: 'pipe', + preferLocal: true + }); + await Promise.all([// Bazel outputs machine readable output into stdout and human readable output goes to stderr. + // Therefore we need to get both. In order to get errors we need to parse the actual text line + Rx.lastValueFrom(Rx.merge((0, _stdioDevHelpers.observeLines)(bazelProc.stdout).pipe((0, _operators.tap)(line => options.log.info(`${_chalk.default.cyan(`[${runner}]`)} ${line}`))), (0, _stdioDevHelpers.observeLines)(bazelProc.stderr).pipe((0, _operators.tap)(line => options.log.info(`${_chalk.default.cyan(`[${runner}]`)} ${line}`)))).pipe(Rx.defaultIfEmpty(undefined))), // Wait for process and logs to finish, unsubscribing in the end + bazelProc.catch(() => { + options.log.error('HINT: If experiencing problems with node_modules try `yarn kbn bootstrap --force-install` or as last resort `yarn kbn reset && yarn kbn bootstrap`'); + throw new Error(`The bazel command that was running failed to complete.`); + })]); +} + +async function runBazel(options) { + await runBazelCommandWithRunner('bazel', options); +} + +async function runIBazel(options) { + var _options$execaOpts; + + await runBazelCommandWithRunner('ibazel', { ...options, + execaOpts: { ...options.execaOpts, + env: { ...((_options$execaOpts = options.execaOpts) === null || _options$execaOpts === void 0 ? void 0 : _options$execaOpts.env), + IBAZEL_USE_LEGACY_WATCHER: '0' + } + } + }); +} + +/***/ }), + +/***/ "../../node_modules/@kbn/bazel-runner/target_node/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _bazel_runner = __webpack_require__("../../node_modules/@kbn/bazel-runner/target_node/bazel_runner.js"); + +Object.keys(_bazel_runner).forEach(function (key) { + if (key === "default" || key === "__esModule") return; + if (key in exports && exports[key] === _bazel_runner[key]) return; + Object.defineProperty(exports, key, { + enumerable: true, + get: function () { + return _bazel_runner[key]; + } + }); +}); + +/***/ }), + /***/ "../../node_modules/@kbn/ci-stats-core/target_node/ci_stats_config.js": /***/ (function(module, exports, __webpack_require__) { @@ -2734,3992 +2826,2774 @@ exports.ToolingLogTextWriter = ToolingLogTextWriter; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/async/for-each.js": +/***/ "../../node_modules/@nodelib/fs.scandir/out/adapters/fs.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = __webpack_require__("fs"); +exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync +}; +function createFileSystemAdapter(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); +} +exports.createFileSystemAdapter = createFileSystemAdapter; -module.exports = asyncForEach; +/***/ }), -/** - * Simultaneously processes all items in the given array. - * - * @param {array} array - The array to iterate over - * @param {function} iterator - The function to call for each item in the array - * @param {function} done - The function to call when all iterators have completed - */ -function asyncForEach (array, iterator, done) { - if (array.length === 0) { - // NOTE: Normally a bad idea to mix sync and async, but it's safe here because - // of the way that this method is currently used by DirectoryReader. - done(); - return; - } +/***/ "../../node_modules/@nodelib/fs.scandir/out/constants.js": +/***/ (function(module, exports, __webpack_require__) { - // Simultaneously process all items in the array. - let pending = array.length; - array.forEach(item => { - iterator(item, () => { - if (--pending === 0) { - done(); - } - }); - }); -} +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.'); +const MAJOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); +const MINOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); +const SUPPORTED_MAJOR_VERSION = 10; +const SUPPORTED_MINOR_VERSION = 10; +const IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; +const IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; +/** + * IS `true` for Node.js 10.10 and greater. + */ +exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js": +/***/ "../../node_modules/@nodelib/fs.scandir/out/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const async = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/providers/async.js"); +const sync = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/providers/sync.js"); +const settings_1 = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/settings.js"); +exports.Settings = settings_1.default; +function scandir(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + return async.read(path, getSettings(), optionsOrSettingsOrCallback); + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); +} +exports.scandir = scandir; +function scandirSync(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync.read(path, settings); +} +exports.scandirSync = scandirSync; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} -module.exports = readdirAsync; - -const maybe = __webpack_require__("../../node_modules/call-me-maybe/index.js"); -const DirectoryReader = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/directory-reader.js"); +/***/ }), -let asyncFacade = { - fs: __webpack_require__("fs"), - forEach: __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/async/for-each.js"), - async: true -}; +/***/ "../../node_modules/@nodelib/fs.scandir/out/providers/async.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Returns the buffered output from an asynchronous {@link DirectoryReader}, - * via an error-first callback or a {@link Promise}. - * - * @param {string} dir - * @param {object} [options] - * @param {function} [callback] - * @param {object} internalOptions - */ -function readdirAsync (dir, options, callback, internalOptions) { - if (typeof options === 'function') { - callback = options; - options = undefined; - } +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const rpl = __webpack_require__("../../node_modules/run-parallel/index.js"); +const constants_1 = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/constants.js"); +const utils = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/utils/index.js"); +function read(directory, settings, callback) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + return readdirWithFileTypes(directory, settings, callback); + } + return readdir(directory, settings, callback); +} +exports.read = read; +function readdirWithFileTypes(directory, settings, callback) { + settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { + if (readdirError !== null) { + return callFailureCallback(callback, readdirError); + } + const entries = dirents.map((dirent) => ({ + dirent, + name: dirent.name, + path: `${directory}${settings.pathSegmentSeparator}${dirent.name}` + })); + if (!settings.followSymbolicLinks) { + return callSuccessCallback(callback, entries); + } + const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); + rpl(tasks, (rplError, rplEntries) => { + if (rplError !== null) { + return callFailureCallback(callback, rplError); + } + callSuccessCallback(callback, rplEntries); + }); + }); +} +exports.readdirWithFileTypes = readdirWithFileTypes; +function makeRplTaskEntry(entry, settings) { + return (done) => { + if (!entry.dirent.isSymbolicLink()) { + return done(null, entry); + } + settings.fs.stat(entry.path, (statError, stats) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + return done(statError); + } + return done(null, entry); + } + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + return done(null, entry); + }); + }; +} +function readdir(directory, settings, callback) { + settings.fs.readdir(directory, (readdirError, names) => { + if (readdirError !== null) { + return callFailureCallback(callback, readdirError); + } + const filepaths = names.map((name) => `${directory}${settings.pathSegmentSeparator}${name}`); + const tasks = filepaths.map((filepath) => { + return (done) => fsStat.stat(filepath, settings.fsStatSettings, done); + }); + rpl(tasks, (rplError, results) => { + if (rplError !== null) { + return callFailureCallback(callback, rplError); + } + const entries = []; + names.forEach((name, index) => { + const stats = results[index]; + const entry = { + name, + path: filepaths[index], + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + entries.push(entry); + }); + callSuccessCallback(callback, entries); + }); + }); +} +exports.readdir = readdir; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, result) { + callback(null, result); +} - return maybe(callback, new Promise(((resolve, reject) => { - let results = []; - internalOptions.facade = asyncFacade; +/***/ }), - let reader = new DirectoryReader(dir, options, internalOptions); - let stream = reader.stream; +/***/ "../../node_modules/@nodelib/fs.scandir/out/providers/sync.js": +/***/ (function(module, exports, __webpack_require__) { - stream.on('error', err => { - reject(err); - stream.pause(); - }); - stream.on('data', result => { - results.push(result); - }); - stream.on('end', () => { - resolve(results); - }); - }))); -} +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const constants_1 = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/constants.js"); +const utils = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/utils/index.js"); +function read(directory, settings) { + if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { + return readdirWithFileTypes(directory, settings); + } + return readdir(directory, settings); +} +exports.read = read; +function readdirWithFileTypes(directory, settings) { + const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); + return dirents.map((dirent) => { + const entry = { + dirent, + name: dirent.name, + path: `${directory}${settings.pathSegmentSeparator}${dirent.name}` + }; + if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { + try { + const stats = settings.fs.statSync(entry.path); + entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); + } + catch (error) { + if (settings.throwErrorOnBrokenSymbolicLink) { + throw error; + } + } + } + return entry; + }); +} +exports.readdirWithFileTypes = readdirWithFileTypes; +function readdir(directory, settings) { + const names = settings.fs.readdirSync(directory); + return names.map((name) => { + const entryPath = `${directory}${settings.pathSegmentSeparator}${name}`; + const stats = fsStat.statSync(entryPath, settings.fsStatSettings); + const entry = { + name, + path: entryPath, + dirent: utils.fs.createDirentFromStats(name, stats) + }; + if (settings.stats) { + entry.stats = stats; + } + return entry; + }); +} +exports.readdir = readdir; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/call.js": +/***/ "../../node_modules/@nodelib/fs.scandir/out/settings.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const path = __webpack_require__("path"); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const fs = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/adapters/fs.js"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.stats = this._getValue(this._options.stats, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + this.fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this.followSymbolicLinks, + fs: this.fs, + throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option === undefined ? value : option; + } +} +exports.default = Settings; -let call = module.exports = { - safe: safeCall, - once: callOnce, -}; - -/** - * Calls a function with the given arguments, and ensures that the error-first callback is _always_ - * invoked exactly once, even if the function throws an error. - * - * @param {function} fn - The function to invoke - * @param {...*} args - The arguments to pass to the function. The final argument must be a callback function. - */ -function safeCall (fn, args) { - // Get the function arguments as an array - args = Array.prototype.slice.call(arguments, 1); - - // Replace the callback function with a wrapper that ensures it will only be called once - let callback = call.once(args.pop()); - args.push(callback); +/***/ }), - try { - fn.apply(null, args); - } - catch (err) { - callback(err); - } -} +/***/ "../../node_modules/@nodelib/fs.scandir/out/utils/fs.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Returns a wrapper function that ensures the given callback function is only called once. - * Subsequent calls are ignored, unless the first argument is an Error, in which case the - * error is thrown. - * - * @param {function} fn - The function that should only be called once - * @returns {function} - */ -function callOnce (fn) { - let fulfilled = false; - - return function onceWrapper (err) { - if (!fulfilled) { - fulfilled = true; - return fn.apply(this, arguments); - } - else if (err) { - // The callback has already been called, but now an error has occurred - // (most likely inside the callback function). So re-throw the error, - // so it gets handled further up the call stack - throw err; - } - }; -} +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } +} +function createDirentFromStats(name, stats) { + return new DirentFromStats(name, stats); +} +exports.createDirentFromStats = createDirentFromStats; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/directory-reader.js": +/***/ "../../node_modules/@nodelib/fs.scandir/out/utils/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/utils/fs.js"); +exports.fs = fs; -const Readable = __webpack_require__("stream").Readable; -const EventEmitter = __webpack_require__("events").EventEmitter; -const path = __webpack_require__("path"); -const normalizeOptions = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/normalize-options.js"); -const stat = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/stat.js"); -const call = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/call.js"); - -/** - * Asynchronously reads the contents of a directory and streams the results - * via a {@link stream.Readable}. - */ -class DirectoryReader { - /** - * @param {string} dir - The absolute or relative directory path to read - * @param {object} [options] - User-specified options, if any (see {@link normalizeOptions}) - * @param {object} internalOptions - Internal options that aren't part of the public API - * @class - */ - constructor (dir, options, internalOptions) { - this.options = options = normalizeOptions(options, internalOptions); - - // Indicates whether we should keep reading - // This is set false if stream.Readable.push() returns false. - this.shouldRead = true; - - // The directories to read - // (initialized with the top-level directory) - this.queue = [{ - path: dir, - basePath: options.basePath, - posixBasePath: options.posixBasePath, - depth: 0 - }]; - - // The number of directories that are currently being processed - this.pending = 0; - - // The data that has been read, but not yet emitted - this.buffer = []; - - this.stream = new Readable({ objectMode: true }); - this.stream._read = () => { - // Start (or resume) reading - this.shouldRead = true; - - // If we have data in the buffer, then send the next chunk - if (this.buffer.length > 0) { - this.pushFromBuffer(); - } - - // If we have directories queued, then start processing the next one - if (this.queue.length > 0) { - if (this.options.facade.sync) { - while (this.queue.length > 0) { - this.readNextDirectory(); - } - } - else { - this.readNextDirectory(); - } - } - - this.checkForEOF(); - }; - } +/***/ }), - /** - * Reads the next directory in the queue - */ - readNextDirectory () { - let facade = this.options.facade; - let dir = this.queue.shift(); - this.pending++; +/***/ "../../node_modules/@nodelib/fs.stat/out/adapters/fs.js": +/***/ (function(module, exports, __webpack_require__) { - // Read the directory listing - call.safe(facade.fs.readdir, dir.path, (err, items) => { - if (err) { - // fs.readdir threw an error - this.emit('error', err); - return this.finishedReadingDirectory(); - } +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = __webpack_require__("fs"); +exports.FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + stat: fs.stat, + lstatSync: fs.lstatSync, + statSync: fs.statSync +}; +function createFileSystemAdapter(fsMethods) { + if (fsMethods === undefined) { + return exports.FILE_SYSTEM_ADAPTER; + } + return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); +} +exports.createFileSystemAdapter = createFileSystemAdapter; - try { - // Process each item in the directory (simultaneously, if async) - facade.forEach( - items, - this.processItem.bind(this, dir), - this.finishedReadingDirectory.bind(this, dir) - ); - } - catch (err2) { - // facade.forEach threw an error - // (probably because fs.readdir returned an invalid result) - this.emit('error', err2); - this.finishedReadingDirectory(); - } - }); - } - /** - * This method is called after all items in a directory have been processed. - * - * NOTE: This does not necessarily mean that the reader is finished, since there may still - * be other directories queued or pending. - */ - finishedReadingDirectory () { - this.pending--; +/***/ }), - if (this.shouldRead) { - // If we have directories queued, then start processing the next one - if (this.queue.length > 0 && this.options.facade.async) { - this.readNextDirectory(); - } +/***/ "../../node_modules/@nodelib/fs.stat/out/index.js": +/***/ (function(module, exports, __webpack_require__) { - this.checkForEOF(); - } - } +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const async = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/providers/async.js"); +const sync = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/providers/sync.js"); +const settings_1 = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/settings.js"); +exports.Settings = settings_1.default; +function stat(path, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + return async.read(path, getSettings(), optionsOrSettingsOrCallback); + } + async.read(path, getSettings(optionsOrSettingsOrCallback), callback); +} +exports.stat = stat; +function statSync(path, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + return sync.read(path, settings); +} +exports.statSync = statSync; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} - /** - * Determines whether the reader has finished processing all items in all directories. - * If so, then the "end" event is fired (via {@Readable#push}) - */ - checkForEOF () { - if (this.buffer.length === 0 && // The stuff we've already read - this.pending === 0 && // The stuff we're currently reading - this.queue.length === 0) { // The stuff we haven't read yet - // There's no more stuff! - this.stream.push(null); - } - } - /** - * Processes a single item in a directory. - * - * If the item is a directory, and `option.deep` is enabled, then the item will be added - * to the directory queue. - * - * If the item meets the filter criteria, then it will be emitted to the reader's stream. - * - * @param {object} dir - A directory object from the queue - * @param {string} item - The name of the item (name only, no path) - * @param {function} done - A callback function that is called after the item has been processed - */ - processItem (dir, item, done) { - let stream = this.stream; - let options = this.options; - - let itemPath = dir.basePath + item; - let posixPath = dir.posixBasePath + item; - let fullPath = path.join(dir.path, item); - - // If `options.deep` is a number, and we've already recursed to the max depth, - // then there's no need to check fs.Stats to know if it's a directory. - // If `options.deep` is a function, then we'll need fs.Stats - let maxDepthReached = dir.depth >= options.recurseDepth; - - // Do we need to call `fs.stat`? - let needStats = - !maxDepthReached || // we need the fs.Stats to know if it's a directory - options.stats || // the user wants fs.Stats objects returned - options.recurseFn || // we need fs.Stats for the recurse function - options.filterFn || // we need fs.Stats for the filter function - EventEmitter.listenerCount(stream, 'file') || // we need the fs.Stats to know if it's a file - EventEmitter.listenerCount(stream, 'directory') || // we need the fs.Stats to know if it's a directory - EventEmitter.listenerCount(stream, 'symlink'); // we need the fs.Stats to know if it's a symlink - - // If we don't need stats, then exit early - if (!needStats) { - if (this.filter(itemPath, posixPath)) { - this.pushOrBuffer({ data: itemPath }); - } - return done(); - } +/***/ }), - // Get the fs.Stats object for this path - stat(options.facade.fs, fullPath, (err, stats) => { - if (err) { - // fs.stat threw an error - this.emit('error', err); - return done(); - } +/***/ "../../node_modules/@nodelib/fs.stat/out/providers/async.js": +/***/ (function(module, exports, __webpack_require__) { - try { - // Add the item's path to the fs.Stats object - // The base of this path, and its separators are determined by the options - // (i.e. options.basePath and options.sep) - stats.path = itemPath; - - // Add depth of the path to the fs.Stats object for use this in the filter function - stats.depth = dir.depth; - - if (this.shouldRecurse(stats, posixPath, maxDepthReached)) { - // Add this subdirectory to the queue - this.queue.push({ - path: fullPath, - basePath: itemPath + options.sep, - posixBasePath: posixPath + '/', - depth: dir.depth + 1, - }); - } +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +function read(path, settings, callback) { + settings.fs.lstat(path, (lstatError, lstat) => { + if (lstatError !== null) { + return callFailureCallback(callback, lstatError); + } + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + return callSuccessCallback(callback, lstat); + } + settings.fs.stat(path, (statError, stat) => { + if (statError !== null) { + if (settings.throwErrorOnBrokenSymbolicLink) { + return callFailureCallback(callback, statError); + } + return callSuccessCallback(callback, lstat); + } + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + callSuccessCallback(callback, stat); + }); + }); +} +exports.read = read; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, result) { + callback(null, result); +} - // Determine whether this item matches the filter criteria - if (this.filter(stats, posixPath)) { - this.pushOrBuffer({ - data: options.stats ? stats : itemPath, - file: stats.isFile(), - directory: stats.isDirectory(), - symlink: stats.isSymbolicLink(), - }); - } - done(); - } - catch (err2) { - // An error occurred while processing the item - // (probably during a user-specified function, such as options.deep, options.filter, etc.) - this.emit('error', err2); - done(); - } - }); - } +/***/ }), - /** - * Pushes the given chunk of data to the stream, or adds it to the buffer, - * depending on the state of the stream. - * - * @param {object} chunk - */ - pushOrBuffer (chunk) { - // Add the chunk to the buffer - this.buffer.push(chunk); +/***/ "../../node_modules/@nodelib/fs.stat/out/providers/sync.js": +/***/ (function(module, exports, __webpack_require__) { - // If we're still reading, then immediately emit the next chunk in the buffer - // (which may or may not be the chunk that we just added) - if (this.shouldRead) { - this.pushFromBuffer(); - } - } - - /** - * Immediately pushes the next chunk in the buffer to the reader's stream. - * The "data" event will always be fired (via {@link Readable#push}). - * In addition, the "file", "directory", and/or "symlink" events may be fired, - * depending on the type of properties of the chunk. - */ - pushFromBuffer () { - let stream = this.stream; - let chunk = this.buffer.shift(); - - // Stream the data - try { - this.shouldRead = stream.push(chunk.data); - } - catch (err) { - this.emit('error', err); - } - - // Also emit specific events, based on the type of chunk - chunk.file && this.emit('file', chunk.data); - chunk.symlink && this.emit('symlink', chunk.data); - chunk.directory && this.emit('directory', chunk.data); - } - - /** - * Determines whether the given directory meets the user-specified recursion criteria. - * If the user didn't specify recursion criteria, then this function will default to true. - * - * @param {fs.Stats} stats - The directory's {@link fs.Stats} object - * @param {string} posixPath - The item's POSIX path (used for glob matching) - * @param {boolean} maxDepthReached - Whether we've already crawled the user-specified depth - * @returns {boolean} - */ - shouldRecurse (stats, posixPath, maxDepthReached) { - let options = this.options; - - if (maxDepthReached) { - // We've already crawled to the maximum depth. So no more recursion. - return false; - } - else if (!stats.isDirectory()) { - // It's not a directory. So don't try to crawl it. - return false; - } - else if (options.recurseGlob) { - // Glob patterns are always tested against the POSIX path, even on Windows - // https://github.com/isaacs/node-glob#windows - return options.recurseGlob.test(posixPath); - } - else if (options.recurseRegExp) { - // Regular expressions are tested against the normal path - // (based on the OS or options.sep) - return options.recurseRegExp.test(stats.path); - } - else if (options.recurseFn) { - try { - // Run the user-specified recursion criteria - return options.recurseFn.call(null, stats); - } - catch (err) { - // An error occurred in the user's code. - // In Sync and Async modes, this will return an error. - // In Streaming mode, we emit an "error" event, but continue processing - this.emit('error', err); - } - } - else { - // No recursion function was specified, and we're within the maximum depth. - // So crawl this directory. - return true; - } - } - - /** - * Determines whether the given item meets the user-specified filter criteria. - * If the user didn't specify a filter, then this function will always return true. - * - * @param {string|fs.Stats} value - Either the item's path, or the item's {@link fs.Stats} object - * @param {string} posixPath - The item's POSIX path (used for glob matching) - * @returns {boolean} - */ - filter (value, posixPath) { - let options = this.options; - - if (options.filterGlob) { - // Glob patterns are always tested against the POSIX path, even on Windows - // https://github.com/isaacs/node-glob#windows - return options.filterGlob.test(posixPath); - } - else if (options.filterRegExp) { - // Regular expressions are tested against the normal path - // (based on the OS or options.sep) - return options.filterRegExp.test(value.path || value); - } - else if (options.filterFn) { - try { - // Run the user-specified filter function - return options.filterFn.call(null, value); - } - catch (err) { - // An error occurred in the user's code. - // In Sync and Async modes, this will return an error. - // In Streaming mode, we emit an "error" event, but continue processing - this.emit('error', err); - } - } - else { - // No filter was specified, so match everything - return true; - } - } - - /** - * Emits an event. If one of the event listeners throws an error, - * then an "error" event is emitted. - * - * @param {string} eventName - * @param {*} data - */ - emit (eventName, data) { - let stream = this.stream; - - try { - stream.emit(eventName, data); - } - catch (err) { - if (eventName === 'error') { - // Don't recursively emit "error" events. - // If the first one fails, then just throw - throw err; - } - else { - stream.emit('error', err); - } - } - } -} - -module.exports = DirectoryReader; +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +function read(path, settings) { + const lstat = settings.fs.lstatSync(path); + if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { + return lstat; + } + try { + const stat = settings.fs.statSync(path); + if (settings.markSymbolicLink) { + stat.isSymbolicLink = () => true; + } + return stat; + } + catch (error) { + if (!settings.throwErrorOnBrokenSymbolicLink) { + return lstat; + } + throw error; + } +} +exports.read = read; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/index.js": +/***/ "../../node_modules/@nodelib/fs.stat/out/settings.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -const readdirSync = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/sync/index.js"); -const readdirAsync = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/async/index.js"); -const readdirStream = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/stream/index.js"); - -module.exports = exports = readdirAsyncPath; -exports.readdir = exports.readdirAsync = exports.async = readdirAsyncPath; -exports.readdirAsyncStat = exports.async.stat = readdirAsyncStat; -exports.readdirStream = exports.stream = readdirStreamPath; -exports.readdirStreamStat = exports.stream.stat = readdirStreamStat; -exports.readdirSync = exports.sync = readdirSyncPath; -exports.readdirSyncStat = exports.sync.stat = readdirSyncStat; - -/** - * Synchronous readdir that returns an array of string paths. - * - * @param {string} dir - * @param {object} [options] - * @returns {string[]} - */ -function readdirSyncPath (dir, options) { - return readdirSync(dir, options, {}); -} - -/** - * Synchronous readdir that returns results as an array of {@link fs.Stats} objects - * - * @param {string} dir - * @param {object} [options] - * @returns {fs.Stats[]} - */ -function readdirSyncStat (dir, options) { - return readdirSync(dir, options, { stats: true }); -} - -/** - * Aynchronous readdir (accepts an error-first callback or returns a {@link Promise}). - * Results are an array of path strings. - * - * @param {string} dir - * @param {object} [options] - * @param {function} [callback] - * @returns {Promise} - */ -function readdirAsyncPath (dir, options, callback) { - return readdirAsync(dir, options, callback, {}); -} - -/** - * Aynchronous readdir (accepts an error-first callback or returns a {@link Promise}). - * Results are an array of {@link fs.Stats} objects. - * - * @param {string} dir - * @param {object} [options] - * @param {function} [callback] - * @returns {Promise} - */ -function readdirAsyncStat (dir, options, callback) { - return readdirAsync(dir, options, callback, { stats: true }); -} - -/** - * Aynchronous readdir that returns a {@link stream.Readable} (which is also an {@link EventEmitter}). - * All stream data events ("data", "file", "directory", "symlink") are passed a path string. - * - * @param {string} dir - * @param {object} [options] - * @returns {stream.Readable} - */ -function readdirStreamPath (dir, options) { - return readdirStream(dir, options, {}); -} - -/** - * Aynchronous readdir that returns a {@link stream.Readable} (which is also an {@link EventEmitter}) - * All stream data events ("data", "file", "directory", "symlink") are passed an {@link fs.Stats} object. - * - * @param {string} dir - * @param {object} [options] - * @returns {stream.Readable} - */ -function readdirStreamStat (dir, options) { - return readdirStream(dir, options, { stats: true }); -} + +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/adapters/fs.js"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); + this.fs = fs.createFileSystemAdapter(this._options.fs); + this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); + } + _getValue(option, value) { + return option === undefined ? value : option; + } +} +exports.default = Settings; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/normalize-options.js": +/***/ "../../node_modules/@nodelib/fs.walk/out/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -const path = __webpack_require__("path"); -const globToRegExp = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/node_modules/glob-to-regexp/index.js"); - -module.exports = normalizeOptions; - -let isWindows = /^win/.test(process.platform); - -/** - * @typedef {Object} FSFacade - * @property {fs.readdir} readdir - * @property {fs.stat} stat - * @property {fs.lstat} lstat - */ - -/** - * Validates and normalizes the options argument - * - * @param {object} [options] - User-specified options, if any - * @param {object} internalOptions - Internal options that aren't part of the public API - * - * @param {number|boolean|function} [options.deep] - * The number of directories to recursively traverse. Any falsy value or negative number will - * default to zero, so only the top-level contents will be returned. Set to `true` or `Infinity` - * to traverse all subdirectories. Or provide a function that accepts a {@link fs.Stats} object - * and returns a truthy value if the directory's contents should be crawled. - * - * @param {function|string|RegExp} [options.filter] - * A function that accepts a {@link fs.Stats} object and returns a truthy value if the data should - * be returned. Or a RegExp or glob string pattern, to filter by file name. - * - * @param {string} [options.sep] - * The path separator to use. By default, the OS-specific separator will be used, but this can be - * set to a specific value to ensure consistency across platforms. - * - * @param {string} [options.basePath] - * The base path to prepend to each result. If empty, then all results will be relative to `dir`. - * - * @param {FSFacade} [options.fs] - * Synchronous or asynchronous facades for Node.js File System module - * - * @param {object} [internalOptions.facade] - * Synchronous or asynchronous facades for various methods, including for the Node.js File System module - * - * @param {boolean} [internalOptions.emit] - * Indicates whether the reader should emit "file", "directory", and "symlink" events - * - * @param {boolean} [internalOptions.stats] - * Indicates whether the reader should emit {@link fs.Stats} objects instead of path strings - * - * @returns {object} - */ -function normalizeOptions (options, internalOptions) { - if (options === null || options === undefined) { - options = {}; - } - else if (typeof options !== 'object') { - throw new TypeError('options must be an object'); - } - - let recurseDepth, recurseFn, recurseRegExp, recurseGlob, deep = options.deep; - if (deep === null || deep === undefined) { - recurseDepth = 0; - } - else if (typeof deep === 'boolean') { - recurseDepth = deep ? Infinity : 0; - } - else if (typeof deep === 'number') { - if (deep < 0 || isNaN(deep)) { - throw new Error('options.deep must be a positive number'); - } - else if (Math.floor(deep) !== deep) { - throw new Error('options.deep must be an integer'); - } - else { - recurseDepth = deep; - } - } - else if (typeof deep === 'function') { - recurseDepth = Infinity; - recurseFn = deep; - } - else if (deep instanceof RegExp) { - recurseDepth = Infinity; - recurseRegExp = deep; - } - else if (typeof deep === 'string' && deep.length > 0) { - recurseDepth = Infinity; - recurseGlob = globToRegExp(deep, { extended: true, globstar: true }); - } - else { - throw new TypeError('options.deep must be a boolean, number, function, regular expression, or glob pattern'); - } - - let filterFn, filterRegExp, filterGlob, filter = options.filter; - if (filter !== null && filter !== undefined) { - if (typeof filter === 'function') { - filterFn = filter; - } - else if (filter instanceof RegExp) { - filterRegExp = filter; - } - else if (typeof filter === 'string' && filter.length > 0) { - filterGlob = globToRegExp(filter, { extended: true, globstar: true }); - } - else { - throw new TypeError('options.filter must be a function, regular expression, or glob pattern'); - } - } - - let sep = options.sep; - if (sep === null || sep === undefined) { - sep = path.sep; - } - else if (typeof sep !== 'string') { - throw new TypeError('options.sep must be a string'); - } - - let basePath = options.basePath; - if (basePath === null || basePath === undefined) { - basePath = ''; - } - else if (typeof basePath === 'string') { - // Append a path separator to the basePath, if necessary - if (basePath && basePath.substr(-1) !== sep) { - basePath += sep; - } - } - else { - throw new TypeError('options.basePath must be a string'); - } - - // Convert the basePath to POSIX (forward slashes) - // so that glob pattern matching works consistently, even on Windows - let posixBasePath = basePath; - if (posixBasePath && sep !== '/') { - posixBasePath = posixBasePath.replace(new RegExp('\\' + sep, 'g'), '/'); - - /* istanbul ignore if */ - if (isWindows) { - // Convert Windows root paths (C:\) and UNCs (\\) to POSIX root paths - posixBasePath = posixBasePath.replace(/^([a-zA-Z]\:\/|\/\/)/, '/'); - } - } - - // Determine which facade methods to use - let facade; - if (options.fs === null || options.fs === undefined) { - // The user didn't provide their own facades, so use our internal ones - facade = internalOptions.facade; - } - else if (typeof options.fs === 'object') { - // Merge the internal facade methods with the user-provided `fs` facades - facade = Object.assign({}, internalOptions.facade); - facade.fs = Object.assign({}, internalOptions.facade.fs, options.fs); - } - else { - throw new TypeError('options.fs must be an object'); - } - - return { - recurseDepth, - recurseFn, - recurseRegExp, - recurseGlob, - filterFn, - filterRegExp, - filterGlob, - sep, - basePath, - posixBasePath, - facade, - emit: !!internalOptions.emit, - stats: !!internalOptions.stats, - }; -} + +Object.defineProperty(exports, "__esModule", { value: true }); +const async_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/providers/async.js"); +const stream_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/providers/stream.js"); +const sync_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/providers/sync.js"); +const settings_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/settings.js"); +exports.Settings = settings_1.default; +function walk(directory, optionsOrSettingsOrCallback, callback) { + if (typeof optionsOrSettingsOrCallback === 'function') { + return new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); + } + new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); +} +exports.walk = walk; +function walkSync(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new sync_1.default(directory, settings); + return provider.read(); +} +exports.walkSync = walkSync; +function walkStream(directory, optionsOrSettings) { + const settings = getSettings(optionsOrSettings); + const provider = new stream_1.default(directory, settings); + return provider.read(); +} +exports.walkStream = walkStream; +function getSettings(settingsOrOptions = {}) { + if (settingsOrOptions instanceof settings_1.default) { + return settingsOrOptions; + } + return new settings_1.default(settingsOrOptions); +} /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/stat.js": +/***/ "../../node_modules/@nodelib/fs.walk/out/providers/async.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -const call = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/call.js"); - -module.exports = stat; - -/** - * Retrieves the {@link fs.Stats} for the given path. If the path is a symbolic link, - * then the Stats of the symlink's target are returned instead. If the symlink is broken, - * then the Stats of the symlink itself are returned. - * - * @param {object} fs - Synchronous or Asynchronouse facade for the "fs" module - * @param {string} path - The path to return stats for - * @param {function} callback - */ -function stat (fs, path, callback) { - let isSymLink = false; - - call.safe(fs.lstat, path, (err, lstats) => { - if (err) { - // fs.lstat threw an eror - return callback(err); - } - - try { - isSymLink = lstats.isSymbolicLink(); - } - catch (err2) { - // lstats.isSymbolicLink() threw an error - // (probably because fs.lstat returned an invalid result) - return callback(err2); - } - - if (isSymLink) { - // Try to resolve the symlink - symlinkStat(fs, path, lstats, callback); - } - else { - // It's not a symlink, so return the stats as-is - callback(null, lstats); - } - }); -} - -/** - * Retrieves the {@link fs.Stats} for the target of the given symlink. - * If the symlink is broken, then the Stats of the symlink itself are returned. - * - * @param {object} fs - Synchronous or Asynchronouse facade for the "fs" module - * @param {string} path - The path of the symlink to return stats for - * @param {object} lstats - The stats of the symlink - * @param {function} callback - */ -function symlinkStat (fs, path, lstats, callback) { - call.safe(fs.stat, path, (err, stats) => { - if (err) { - // The symlink is broken, so return the stats for the link itself - return callback(null, lstats); - } - - try { - // Return the stats for the resolved symlink target, - // and override the `isSymbolicLink` method to indicate that it's a symlink - stats.isSymbolicLink = () => true; - } - catch (err2) { - // Setting stats.isSymbolicLink threw an error - // (probably because fs.stat returned an invalid result) - return callback(err2); - } - - callback(null, stats); - }); -} + +Object.defineProperty(exports, "__esModule", { value: true }); +const async_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/async.js"); +class AsyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._storage = new Set(); + } + read(callback) { + this._reader.onError((error) => { + callFailureCallback(callback, error); + }); + this._reader.onEntry((entry) => { + this._storage.add(entry); + }); + this._reader.onEnd(() => { + callSuccessCallback(callback, [...this._storage]); + }); + this._reader.read(); + } +} +exports.default = AsyncProvider; +function callFailureCallback(callback, error) { + callback(error); +} +function callSuccessCallback(callback, entries) { + callback(null, entries); +} /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/stream/index.js": +/***/ "../../node_modules/@nodelib/fs.walk/out/providers/stream.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = __webpack_require__("stream"); +const async_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/async.js"); +class StreamProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new async_1.default(this._root, this._settings); + this._stream = new stream_1.Readable({ + objectMode: true, + read: () => { }, + destroy: this._reader.destroy.bind(this._reader) + }); + } + read() { + this._reader.onError((error) => { + this._stream.emit('error', error); + }); + this._reader.onEntry((entry) => { + this._stream.push(entry); + }); + this._reader.onEnd(() => { + this._stream.push(null); + }); + this._reader.read(); + return this._stream; + } +} +exports.default = StreamProvider; -module.exports = readdirStream; - -const DirectoryReader = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/directory-reader.js"); - -let streamFacade = { - fs: __webpack_require__("fs"), - forEach: __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/async/for-each.js"), - async: true -}; +/***/ }), -/** - * Returns the {@link stream.Readable} of an asynchronous {@link DirectoryReader}. - * - * @param {string} dir - * @param {object} [options] - * @param {object} internalOptions - */ -function readdirStream (dir, options, internalOptions) { - internalOptions.facade = streamFacade; +/***/ "../../node_modules/@nodelib/fs.walk/out/providers/sync.js": +/***/ (function(module, exports, __webpack_require__) { - let reader = new DirectoryReader(dir, options, internalOptions); - return reader.stream; -} +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const sync_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/sync.js"); +class SyncProvider { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._reader = new sync_1.default(this._root, this._settings); + } + read() { + return this._reader.read(); + } +} +exports.default = SyncProvider; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/sync/for-each.js": +/***/ "../../node_modules/@nodelib/fs.walk/out/readers/async.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const events_1 = __webpack_require__("events"); +const fsScandir = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/index.js"); +const fastq = __webpack_require__("../../node_modules/fastq/queue.js"); +const common = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/common.js"); +const reader_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/reader.js"); +class AsyncReader extends reader_1.default { + constructor(_root, _settings) { + super(_root, _settings); + this._settings = _settings; + this._scandir = fsScandir.scandir; + this._emitter = new events_1.EventEmitter(); + this._queue = fastq(this._worker.bind(this), this._settings.concurrency); + this._isFatalError = false; + this._isDestroyed = false; + this._queue.drain = () => { + if (!this._isFatalError) { + this._emitter.emit('end'); + } + }; + } + read() { + this._isFatalError = false; + this._isDestroyed = false; + setImmediate(() => { + this._pushToQueue(this._root, this._settings.basePath); + }); + return this._emitter; + } + destroy() { + if (this._isDestroyed) { + throw new Error('The reader is already destroyed'); + } + this._isDestroyed = true; + this._queue.killAndDrain(); + } + onEntry(callback) { + this._emitter.on('entry', callback); + } + onError(callback) { + this._emitter.once('error', callback); + } + onEnd(callback) { + this._emitter.once('end', callback); + } + _pushToQueue(directory, base) { + const queueItem = { directory, base }; + this._queue.push(queueItem, (error) => { + if (error !== null) { + this._handleError(error); + } + }); + } + _worker(item, done) { + this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => { + if (error !== null) { + return done(error, undefined); + } + for (const entry of entries) { + this._handleEntry(entry, item.base); + } + done(null, undefined); + }); + } + _handleError(error) { + if (!common.isFatalError(this._settings, error)) { + return; + } + this._isFatalError = true; + this._isDestroyed = true; + this._emitter.emit('error', error); + } + _handleEntry(entry, base) { + if (this._isDestroyed || this._isFatalError) { + return; + } + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._emitEntry(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, entry.path); + } + } + _emitEntry(entry) { + this._emitter.emit('entry', entry); + } +} +exports.default = AsyncReader; -module.exports = syncForEach; +/***/ }), -/** - * A facade that allows {@link Array.forEach} to be called as though it were asynchronous. - * - * @param {array} array - The array to iterate over - * @param {function} iterator - The function to call for each item in the array - * @param {function} done - The function to call when all iterators have completed - */ -function syncForEach (array, iterator, done) { - array.forEach(item => { - iterator(item, () => { - // Note: No error-handling here because this is currently only ever called - // by DirectoryReader, which never passes an `error` parameter to the callback. - // Instead, DirectoryReader emits an "error" event if an error occurs. - }); - }); +/***/ "../../node_modules/@nodelib/fs.walk/out/readers/common.js": +/***/ (function(module, exports, __webpack_require__) { - done(); -} +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +function isFatalError(settings, error) { + if (settings.errorFilter === null) { + return true; + } + return !settings.errorFilter(error); +} +exports.isFatalError = isFatalError; +function isAppliedFilter(filter, value) { + return filter === null || filter(value); +} +exports.isAppliedFilter = isAppliedFilter; +function replacePathSegmentSeparator(filepath, separator) { + return filepath.split(/[\\/]/).join(separator); +} +exports.replacePathSegmentSeparator = replacePathSegmentSeparator; +function joinPathSegments(a, b, separator) { + if (a === '') { + return b; + } + return a + separator + b; +} +exports.joinPathSegments = joinPathSegments; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/sync/fs.js": +/***/ "../../node_modules/@nodelib/fs.walk/out/readers/reader.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const common = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/common.js"); +class Reader { + constructor(_root, _settings) { + this._root = _root; + this._settings = _settings; + this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); + } +} +exports.default = Reader; -const fs = __webpack_require__("fs"); -const call = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/call.js"); - -/** - * A facade around {@link fs.readdirSync} that allows it to be called - * the same way as {@link fs.readdir}. - * - * @param {string} dir - * @param {function} callback - */ -exports.readdir = function (dir, callback) { - // Make sure the callback is only called once - callback = call.once(callback); - - try { - let items = fs.readdirSync(dir); - callback(null, items); - } - catch (err) { - callback(err); - } -}; +/***/ }), -/** - * A facade around {@link fs.statSync} that allows it to be called - * the same way as {@link fs.stat}. - * - * @param {string} path - * @param {function} callback - */ -exports.stat = function (path, callback) { - // Make sure the callback is only called once - callback = call.once(callback); +/***/ "../../node_modules/@nodelib/fs.walk/out/readers/sync.js": +/***/ (function(module, exports, __webpack_require__) { - try { - let stats = fs.statSync(path); - callback(null, stats); - } - catch (err) { - callback(err); - } -}; +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const fsScandir = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/index.js"); +const common = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/common.js"); +const reader_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/reader.js"); +class SyncReader extends reader_1.default { + constructor() { + super(...arguments); + this._scandir = fsScandir.scandirSync; + this._storage = new Set(); + this._queue = new Set(); + } + read() { + this._pushToQueue(this._root, this._settings.basePath); + this._handleQueue(); + return [...this._storage]; + } + _pushToQueue(directory, base) { + this._queue.add({ directory, base }); + } + _handleQueue() { + for (const item of this._queue.values()) { + this._handleDirectory(item.directory, item.base); + } + } + _handleDirectory(directory, base) { + try { + const entries = this._scandir(directory, this._settings.fsScandirSettings); + for (const entry of entries) { + this._handleEntry(entry, base); + } + } + catch (error) { + this._handleError(error); + } + } + _handleError(error) { + if (!common.isFatalError(this._settings, error)) { + return; + } + throw error; + } + _handleEntry(entry, base) { + const fullpath = entry.path; + if (base !== undefined) { + entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); + } + if (common.isAppliedFilter(this._settings.entryFilter, entry)) { + this._pushToStorage(entry); + } + if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { + this._pushToQueue(fullpath, entry.path); + } + } + _pushToStorage(entry) { + this._storage.add(entry); + } +} +exports.default = SyncReader; -/** - * A facade around {@link fs.lstatSync} that allows it to be called - * the same way as {@link fs.lstat}. - * - * @param {string} path - * @param {function} callback - */ -exports.lstat = function (path, callback) { - // Make sure the callback is only called once - callback = call.once(callback); - try { - let stats = fs.lstatSync(path); - callback(null, stats); - } - catch (err) { - callback(err); - } -}; +/***/ }), + +/***/ "../../node_modules/@nodelib/fs.walk/out/settings.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +Object.defineProperty(exports, "__esModule", { value: true }); +const path = __webpack_require__("path"); +const fsScandir = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/index.js"); +class Settings { + constructor(_options = {}) { + this._options = _options; + this.basePath = this._getValue(this._options.basePath, undefined); + this.concurrency = this._getValue(this._options.concurrency, Infinity); + this.deepFilter = this._getValue(this._options.deepFilter, null); + this.entryFilter = this._getValue(this._options.entryFilter, null); + this.errorFilter = this._getValue(this._options.errorFilter, null); + this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); + this.fsScandirSettings = new fsScandir.Settings({ + followSymbolicLinks: this._options.followSymbolicLinks, + fs: this._options.fs, + pathSegmentSeparator: this._options.pathSegmentSeparator, + stats: this._options.stats, + throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink + }); + } + _getValue(option, value) { + return option === undefined ? value : option; + } +} +exports.default = Settings; /***/ }), -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/lib/sync/index.js": +/***/ "../../node_modules/@yarnpkg/lockfile/index.js": +/***/ (function(module, exports, __webpack_require__) { + +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 = 14); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports) { + +module.exports = __webpack_require__("path"); + +/***/ }), +/* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = readdirSync; +exports.__esModule = true; + +var _promise = __webpack_require__(173); + +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; + } -const DirectoryReader = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/directory-reader.js"); + if (info.done) { + resolve(value); + } else { + return _promise2.default.resolve(value).then(function (value) { + step("next", value); + }, function (err) { + step("throw", err); + }); + } + } -let syncFacade = { - fs: __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/sync/fs.js"), - forEach: __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/sync/for-each.js"), - sync: true + return step("next"); + }); + }; }; -/** - * Returns the buffered output from a synchronous {@link DirectoryReader}. - * - * @param {string} dir - * @param {object} [options] - * @param {object} internalOptions - */ -function readdirSync (dir, options, internalOptions) { - internalOptions.facade = syncFacade; +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +module.exports = __webpack_require__("util"); + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +module.exports = __webpack_require__("fs"); + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; - let reader = new DirectoryReader(dir, options, internalOptions); - let stream = reader.stream; - let results = []; - let data = stream.read(); - while (data !== null) { - results.push(data); - data = stream.read(); +Object.defineProperty(exports, "__esModule", { + value: true +}); +class MessageError extends Error { + constructor(msg, code) { + super(msg); + this.code = code; } - return results; } +exports.MessageError = MessageError; +class ProcessSpawnError extends MessageError { + constructor(msg, code, process) { + super(msg, code); + this.process = process; + } -/***/ }), +} -/***/ "../../node_modules/@mrmlnc/readdir-enhanced/node_modules/glob-to-regexp/index.js": -/***/ (function(module, exports) { +exports.ProcessSpawnError = ProcessSpawnError; +class SecurityError extends MessageError {} -module.exports = function (glob, opts) { - if (typeof glob !== 'string') { - throw new TypeError('Expected a string'); +exports.SecurityError = SecurityError; +class ProcessTermError extends MessageError {} + +exports.ProcessTermError = ProcessTermError; +class ResponseError extends Error { + constructor(msg, responseCode) { + super(msg); + this.responseCode = responseCode; } - var str = String(glob); +} +exports.ResponseError = ResponseError; - // The regexp we are building, as a string. - var reStr = ""; +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { - // Whether we are matching so called "extended" globs (like bash) and should - // support single character matching, matching ranges of characters, group - // matching, etc. - var extended = opts ? !!opts.extended : false; +"use strict"; - // When globstar is _false_ (default), '/foo/*' is translated a regexp like - // '^\/foo\/.*$' which will match any string beginning with '/foo/' - // When globstar is _true_, '/foo/*' is translated to regexp like - // '^\/foo\/[^/]*$' which will match any string beginning with '/foo/' BUT - // which does not have a '/' to the right of it. - // E.g. with '/foo/*' these will match: '/foo/bar', '/foo/bar.txt' but - // these will not '/foo/bar/baz', '/foo/bar/baz.txt' - // Lastely, when globstar is _true_, '/foo/**' is equivelant to '/foo/*' when - // globstar is _false_ - var globstar = opts ? !!opts.globstar : false; - // If we are doing extended matching, this boolean is true when we are inside - // a group (eg {*.html,*.js}), and false otherwise. - var inGroup = false; +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; - // RegExp flags (eg "i" ) to pass in to RegExp constructor. - var flags = opts && typeof( opts.flags ) === "string" ? opts.flags : ""; +var _asyncToGenerator2; - var c; - for (var i = 0, len = str.length; i < len; i++) { - c = str[i]; +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); +} - switch (c) { - case "\\": - case "/": - case "$": - case "^": - case "+": - case ".": - case "(": - case ")": - case "=": - case "!": - case "|": - reStr += "\\" + c; - break; +let buildActionsForCopy = (() => { + var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - case "?": - if (extended) { - reStr += "."; - break; - } + // + let build = (() => { + var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { + const src = data.src, + dest = data.dest, + type = data.type; - case "[": - case "]": - if (extended) { - reStr += c; - break; - } + const onFresh = data.onFresh || noop; + const onDone = data.onDone || noop; - case "{": - if (extended) { - inGroup = true; - reStr += "("; - break; - } + // 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()); + } - case "}": - if (extended) { - inGroup = false; - reStr += ")"; - break; - } + if (type === 'symlink') { + yield mkdirp((_path || _load_path()).default.dirname(dest)); + onFresh(); + actions.symlink.push({ + dest, + linkname: src + }); + onDone(); + return; + } - case ",": - if (inGroup) { - reStr += "|"; - break; - } - reStr += "\\" + c; - break; + if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { + // ignored file + return; + } - case "*": - // Move over all consecutive "*"'s. - // Also store the previous and next characters - var prevChar = str[i - 1]; - var starCount = 1; - while(str[i + 1] === "*") { - starCount++; - i++; - } - var nextChar = str[i + 1]; + const srcStat = yield lstat(src); + let srcFiles; - if (!globstar) { - // globstar is disabled, so treat any number of "*" as one - reStr += ".*"; - } else { - // globstar is enabled, so determine if this is a globstar segment - var isGlobstar = starCount > 1 // multiple "*"'s - && (prevChar === "/" || prevChar === undefined) // from the start of the segment - && (nextChar === "/" || nextChar === undefined) // to the end of the segment - - if (isGlobstar) { - // it's a globstar, so match zero or more path segments - reStr += "(?:[^/]*(?:\/|$))*"; - i++; // move over the "/" - } else { - // it's not a globstar, so only match one path segment - reStr += "[^/]*"; + if (srcStat.isDirectory()) { + srcFiles = yield readdir(src); } - } - break; - default: - reStr += c; - } - } + 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; + } + } - // When regexp 'g' flag is specified don't - // constrain the regular expression with ^ & $ - if (!flags || !~flags.indexOf('g')) { - reStr = "^" + reStr + "$"; - } + // if destination exists + if (destStat) { + const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); + const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); + const bothFiles = srcStat.isFile() && destStat.isFile(); - return new RegExp(reStr, flags); -}; + // 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; + } -/***/ "../../node_modules/@nodelib/fs.scandir/out/adapters/fs.js": -/***/ (function(module, exports, __webpack_require__) { + 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; + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__("fs"); -exports.FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - stat: fs.stat, - lstatSync: fs.lstatSync, - statSync: fs.statSync, - readdir: fs.readdir, - readdirSync: fs.readdirSync -}; -function createFileSystemAdapter(fsMethods) { - if (fsMethods === undefined) { - return exports.FILE_SYSTEM_ADAPTER; - } - return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); -} -exports.createFileSystemAdapter = createFileSystemAdapter; + 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; -/***/ "../../node_modules/@nodelib/fs.scandir/out/constants.js": -/***/ (function(module, exports, __webpack_require__) { + if (_isArray4) { + if (_i4 >= _iterator4.length) break; + _ref6 = _iterator4[_i4++]; + } else { + _i4 = _iterator4.next(); + if (_i4.done) break; + _ref6 = _i4.value; + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const NODE_PROCESS_VERSION_PARTS = process.versions.node.split('.'); -const MAJOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[0], 10); -const MINOR_VERSION = parseInt(NODE_PROCESS_VERSION_PARTS[1], 10); -const SUPPORTED_MAJOR_VERSION = 10; -const SUPPORTED_MINOR_VERSION = 10; -const IS_MATCHED_BY_MAJOR = MAJOR_VERSION > SUPPORTED_MAJOR_VERSION; -const IS_MATCHED_BY_MAJOR_AND_MINOR = MAJOR_VERSION === SUPPORTED_MAJOR_VERSION && MINOR_VERSION >= SUPPORTED_MINOR_VERSION; -/** - * IS `true` for Node.js 10.10 and greater. - */ -exports.IS_SUPPORT_READDIR_WITH_FILE_TYPES = IS_MATCHED_BY_MAJOR || IS_MATCHED_BY_MAJOR_AND_MINOR; + 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; -/***/ "../../node_modules/@nodelib/fs.scandir/out/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (_isArray5) { + if (_i5 >= _iterator5.length) break; + _ref7 = _iterator5[_i5++]; + } else { + _i5 = _iterator5.next(); + if (_i5.done) break; + _ref7 = _i5.value; + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const async = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/providers/async.js"); -const sync = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/providers/sync.js"); -const settings_1 = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/settings.js"); -exports.Settings = settings_1.default; -function scandir(path, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === 'function') { - return async.read(path, getSettings(), optionsOrSettingsOrCallback); - } - async.read(path, getSettings(optionsOrSettingsOrCallback), callback); -} -exports.scandir = scandir; -function scandirSync(path, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - return sync.read(path, settings); -} -exports.scandirSync = scandirSync; -function getSettings(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); -} + 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; + } -/***/ "../../node_modules/@nodelib/fs.scandir/out/providers/async.js": -/***/ (function(module, exports, __webpack_require__) { + 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); + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const rpl = __webpack_require__("../../node_modules/run-parallel/index.js"); -const constants_1 = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/constants.js"); -const utils = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/utils/index.js"); -function read(directory, settings, callback) { - if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { - return readdirWithFileTypes(directory, settings, callback); - } - return readdir(directory, settings, callback); -} -exports.read = read; -function readdirWithFileTypes(directory, settings, callback) { - settings.fs.readdir(directory, { withFileTypes: true }, (readdirError, dirents) => { - if (readdirError !== null) { - return callFailureCallback(callback, readdirError); - } - const entries = dirents.map((dirent) => ({ - dirent, - name: dirent.name, - path: `${directory}${settings.pathSegmentSeparator}${dirent.name}` - })); - if (!settings.followSymbolicLinks) { - return callSuccessCallback(callback, entries); - } - const tasks = entries.map((entry) => makeRplTaskEntry(entry, settings)); - rpl(tasks, (rplError, rplEntries) => { - if (rplError !== null) { - return callFailureCallback(callback, rplError); - } - callSuccessCallback(callback, rplEntries); - }); - }); -} -exports.readdirWithFileTypes = readdirWithFileTypes; -function makeRplTaskEntry(entry, settings) { - return (done) => { - if (!entry.dirent.isSymbolicLink()) { - return done(null, entry); - } - settings.fs.stat(entry.path, (statError, stats) => { - if (statError !== null) { - if (settings.throwErrorOnBrokenSymbolicLink) { - return done(statError); - } - return done(null, entry); - } - entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); - return done(null, entry); - }); - }; -} -function readdir(directory, settings, callback) { - settings.fs.readdir(directory, (readdirError, names) => { - if (readdirError !== null) { - return callFailureCallback(callback, readdirError); - } - const filepaths = names.map((name) => `${directory}${settings.pathSegmentSeparator}${name}`); - const tasks = filepaths.map((filepath) => { - return (done) => fsStat.stat(filepath, settings.fsStatSettings, done); - }); - rpl(tasks, (rplError, results) => { - if (rplError !== null) { - return callFailureCallback(callback, rplError); - } - const entries = []; - names.forEach((name, index) => { - const stats = results[index]; - const entry = { - name, - path: filepaths[index], - dirent: utils.fs.createDirentFromStats(name, stats) - }; - if (settings.stats) { - entry.stats = stats; - } - entries.push(entry); - }); - callSuccessCallback(callback, entries); - }); - }); -} -exports.readdir = readdir; -function callFailureCallback(callback, error) { - callback(error); -} -function callSuccessCallback(callback, result) { - callback(null, result); -} + 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; + } -/***/ "../../node_modules/@nodelib/fs.scandir/out/providers/sync.js": -/***/ (function(module, exports, __webpack_require__) { + const file = _ref8; -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const constants_1 = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/constants.js"); -const utils = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/utils/index.js"); -function read(directory, settings) { - if (!settings.stats && constants_1.IS_SUPPORT_READDIR_WITH_FILE_TYPES) { - return readdirWithFileTypes(directory, settings); - } - return readdir(directory, settings); -} -exports.read = read; -function readdirWithFileTypes(directory, settings) { - const dirents = settings.fs.readdirSync(directory, { withFileTypes: true }); - return dirents.map((dirent) => { - const entry = { - dirent, - name: dirent.name, - path: `${directory}${settings.pathSegmentSeparator}${dirent.name}` - }; - if (entry.dirent.isSymbolicLink() && settings.followSymbolicLinks) { - try { - const stats = settings.fs.statSync(entry.path); - entry.dirent = utils.fs.createDirentFromStats(entry.name, stats); - } - catch (error) { - if (settings.throwErrorOnBrokenSymbolicLink) { - throw error; - } - } - } - return entry; - }); -} -exports.readdirWithFileTypes = readdirWithFileTypes; -function readdir(directory, settings) { - const names = settings.fs.readdirSync(directory); - return names.map((name) => { - const entryPath = `${directory}${settings.pathSegmentSeparator}${name}`; - const stats = fsStat.statSync(entryPath, settings.fsStatSettings); - const entry = { - name, - path: entryPath, - dirent: utils.fs.createDirentFromStats(name, stats) - }; - if (settings.stats) { - entry.stats = stats; - } - return entry; - }); -} -exports.readdir = readdir; + 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}`); + } + }); -/***/ "../../node_modules/@nodelib/fs.scandir/out/settings.js": -/***/ (function(module, exports, __webpack_require__) { + return function build(_x5) { + return _ref5.apply(this, arguments); + }; + })(); -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __webpack_require__("path"); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const fs = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/adapters/fs.js"); -class Settings { - constructor(_options = {}) { - this._options = _options; - this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, false); - this.fs = fs.createFileSystemAdapter(this._options.fs); - this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); - this.stats = this._getValue(this._options.stats, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); - this.fsStatSettings = new fsStat.Settings({ - followSymbolicLink: this.followSymbolicLinks, - fs: this.fs, - throwErrorOnBrokenSymbolicLink: this.throwErrorOnBrokenSymbolicLink - }); - } - _getValue(option, value) { - return option === undefined ? value : option; - } -} -exports.default = Settings; + 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; + } -/***/ "../../node_modules/@nodelib/fs.scandir/out/utils/fs.js": -/***/ (function(module, exports, __webpack_require__) { + const item = _ref2; -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -class DirentFromStats { - constructor(name, stats) { - this.name = name; - this.isBlockDevice = stats.isBlockDevice.bind(stats); - this.isCharacterDevice = stats.isCharacterDevice.bind(stats); - this.isDirectory = stats.isDirectory.bind(stats); - this.isFIFO = stats.isFIFO.bind(stats); - this.isFile = stats.isFile.bind(stats); - this.isSocket = stats.isSocket.bind(stats); - this.isSymbolicLink = stats.isSymbolicLink.bind(stats); - } -} -function createDirentFromStats(name, stats) { - return new DirentFromStats(name, stats); -} -exports.createDirentFromStats = createDirentFromStats; + 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)); + } -/***/ "../../node_modules/@nodelib/fs.scandir/out/utils/index.js": -/***/ (function(module, exports, __webpack_require__) { + // 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; -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/utils/fs.js"); -exports.fs = fs; + 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); + } + } -/***/ "../../node_modules/@nodelib/fs.stat/out/adapters/fs.js": -/***/ (function(module, exports, __webpack_require__) { + for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { + var _ref4; -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__("fs"); -exports.FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - stat: fs.stat, - lstatSync: fs.lstatSync, - statSync: fs.statSync -}; -function createFileSystemAdapter(fsMethods) { - if (fsMethods === undefined) { - return exports.FILE_SYSTEM_ADAPTER; - } - return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods); -} -exports.createFileSystemAdapter = createFileSystemAdapter; + 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); + } + } -/***/ "../../node_modules/@nodelib/fs.stat/out/index.js": -/***/ (function(module, exports, __webpack_require__) { + return actions; + }); -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const async = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/providers/async.js"); -const sync = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/providers/sync.js"); -const settings_1 = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/settings.js"); -exports.Settings = settings_1.default; -function stat(path, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === 'function') { - return async.read(path, getSettings(), optionsOrSettingsOrCallback); - } - async.read(path, getSettings(optionsOrSettingsOrCallback), callback); -} -exports.stat = stat; -function statSync(path, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - return sync.read(path, settings); -} -exports.statSync = statSync; -function getSettings(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); -} + 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; -/***/ "../../node_modules/@nodelib/fs.stat/out/providers/async.js": -/***/ (function(module, exports, __webpack_require__) { + 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()); -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -function read(path, settings, callback) { - settings.fs.lstat(path, (lstatError, lstat) => { - if (lstatError !== null) { - return callFailureCallback(callback, lstatError); - } - if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { - return callSuccessCallback(callback, lstat); - } - settings.fs.stat(path, (statError, stat) => { - if (statError !== null) { - if (settings.throwErrorOnBrokenSymbolicLink) { - return callFailureCallback(callback, statError); - } - return callSuccessCallback(callback, lstat); - } - if (settings.markSymbolicLink) { - stat.isSymbolicLink = () => true; - } - callSuccessCallback(callback, stat); - }); - }); -} -exports.read = read; -function callFailureCallback(callback, error) { - callback(error); -} -function callSuccessCallback(callback, result) { - callback(null, result); -} + 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); + } -/***/ "../../node_modules/@nodelib/fs.stat/out/providers/sync.js": -/***/ (function(module, exports, __webpack_require__) { + const destExists = yield exists(dest); + if (destExists) { + const destStat = yield lstat(dest); -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -function read(path, settings) { - const lstat = settings.fs.lstatSync(path); - if (!lstat.isSymbolicLink() || !settings.followSymbolicLink) { - return lstat; - } - try { - const stat = settings.fs.statSync(path); - if (settings.markSymbolicLink) { - stat.isSymbolicLink = () => true; - } - return stat; - } - catch (error) { - if (!settings.throwErrorOnBrokenSymbolicLink) { - return lstat; - } - throw error; - } -} -exports.read = read; + 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; + } -/***/ "../../node_modules/@nodelib/fs.stat/out/settings.js": -/***/ (function(module, exports, __webpack_require__) { + // correct hardlink + if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) { + onDone(); + reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino)); + return; + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/adapters/fs.js"); -class Settings { - constructor(_options = {}) { - this._options = _options; - this.followSymbolicLink = this._getValue(this._options.followSymbolicLink, true); - this.fs = fs.createFileSystemAdapter(this._options.fs); - this.markSymbolicLink = this._getValue(this._options.markSymbolicLink, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, true); - } - _getValue(option, value) { - return option === undefined ? value : option; - } -} -exports.default = Settings; + 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; -/***/ "../../node_modules/@nodelib/fs.walk/out/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (_isArray10) { + if (_i10 >= _iterator10.length) break; + _ref14 = _iterator10[_i10++]; + } else { + _i10 = _iterator10.next(); + if (_i10.done) break; + _ref14 = _i10.value; + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/providers/async.js"); -const stream_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/providers/stream.js"); -const sync_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/providers/sync.js"); -const settings_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/settings.js"); -exports.Settings = settings_1.default; -function walk(directory, optionsOrSettingsOrCallback, callback) { - if (typeof optionsOrSettingsOrCallback === 'function') { - return new async_1.default(directory, getSettings()).read(optionsOrSettingsOrCallback); - } - new async_1.default(directory, getSettings(optionsOrSettingsOrCallback)).read(callback); -} -exports.walk = walk; -function walkSync(directory, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - const provider = new sync_1.default(directory, settings); - return provider.read(); -} -exports.walkSync = walkSync; -function walkStream(directory, optionsOrSettings) { - const settings = getSettings(optionsOrSettings); - const provider = new stream_1.default(directory, settings); - return provider.read(); -} -exports.walkStream = walkStream; -function getSettings(settingsOrOptions = {}) { - if (settingsOrOptions instanceof settings_1.default) { - return settingsOrOptions; - } - return new settings_1.default(settingsOrOptions); -} + 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; -/***/ "../../node_modules/@nodelib/fs.walk/out/providers/async.js": -/***/ (function(module, exports, __webpack_require__) { + if (_isArray11) { + if (_i11 >= _iterator11.length) break; + _ref15 = _iterator11[_i11++]; + } else { + _i11 = _iterator11.next(); + if (_i11.done) break; + _ref15 = _i11.value; + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const async_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/async.js"); -class AsyncProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new async_1.default(this._root, this._settings); - this._storage = new Set(); - } - read(callback) { - this._reader.onError((error) => { - callFailureCallback(callback, error); - }); - this._reader.onEntry((entry) => { - this._storage.add(entry); - }); - this._reader.onEnd(() => { - callSuccessCallback(callback, [...this._storage]); - }); - this._reader.read(); - } -} -exports.default = AsyncProvider; -function callFailureCallback(callback, error) { - callback(error); -} -function callSuccessCallback(callback, entries) { - callback(null, entries); -} + 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); -/***/ "../../node_modules/@nodelib/fs.walk/out/providers/stream.js": -/***/ (function(module, exports, __webpack_require__) { + const destParts = dest.split((_path || _load_path()).default.sep); + while (destParts.length) { + files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); + destParts.pop(); + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__("stream"); -const async_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/async.js"); -class StreamProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new async_1.default(this._root, this._settings); - this._stream = new stream_1.Readable({ - objectMode: true, - read: () => { }, - destroy: this._reader.destroy.bind(this._reader) - }); - } - read() { - this._reader.onError((error) => { - this._stream.emit('error', error); - }); - this._reader.onEntry((entry) => { - this._stream.push(entry); - }); - this._reader.onEnd(() => { - this._stream.push(null); - }); - this._reader.read(); - return this._stream; - } -} -exports.default = StreamProvider; + // 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; -/***/ "../../node_modules/@nodelib/fs.walk/out/providers/sync.js": -/***/ (function(module, exports, __webpack_require__) { + 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); + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/sync.js"); -class SyncProvider { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._reader = new sync_1.default(this._root, this._settings); - } - read() { - return this._reader.read(); - } -} -exports.default = SyncProvider; + 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); + }; + })(); -/***/ "../../node_modules/@nodelib/fs.walk/out/readers/async.js": -/***/ (function(module, exports, __webpack_require__) { + const artifactFiles = new Set(events.artifactFiles || []); + const files = new Set(); -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const events_1 = __webpack_require__("events"); -const fsScandir = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/index.js"); -const fastq = __webpack_require__("../../node_modules/fastq/queue.js"); -const common = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/common.js"); -const reader_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/reader.js"); -class AsyncReader extends reader_1.default { - constructor(_root, _settings) { - super(_root, _settings); - this._settings = _settings; - this._scandir = fsScandir.scandir; - this._emitter = new events_1.EventEmitter(); - this._queue = fastq(this._worker.bind(this), this._settings.concurrency); - this._isFatalError = false; - this._isDestroyed = false; - this._queue.drain = () => { - if (!this._isFatalError) { - this._emitter.emit('end'); - } - }; - } - read() { - this._isFatalError = false; - this._isDestroyed = false; - setImmediate(() => { - this._pushToQueue(this._root, this._settings.basePath); - }); - return this._emitter; - } - destroy() { - if (this._isDestroyed) { - throw new Error('The reader is already destroyed'); - } - this._isDestroyed = true; - this._queue.killAndDrain(); - } - onEntry(callback) { - this._emitter.on('entry', callback); - } - onError(callback) { - this._emitter.once('error', callback); - } - onEnd(callback) { - this._emitter.once('end', callback); - } - _pushToQueue(directory, base) { - const queueItem = { directory, base }; - this._queue.push(queueItem, (error) => { - if (error !== null) { - this._handleError(error); - } - }); - } - _worker(item, done) { - this._scandir(item.directory, this._settings.fsScandirSettings, (error, entries) => { - if (error !== null) { - return done(error, undefined); - } - for (const entry of entries) { - this._handleEntry(entry, item.base); - } - done(null, undefined); - }); - } - _handleError(error) { - if (!common.isFatalError(this._settings, error)) { - return; - } - this._isFatalError = true; - this._isDestroyed = true; - this._emitter.emit('error', error); - } - _handleEntry(entry, base) { - if (this._isDestroyed || this._isFatalError) { - return; - } - const fullpath = entry.path; - if (base !== undefined) { - entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); - } - if (common.isAppliedFilter(this._settings.entryFilter, entry)) { - this._emitEntry(entry); - } - if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { - this._pushToQueue(fullpath, entry.path); - } - } - _emitEntry(entry) { - this._emitter.emit('entry', entry); - } -} -exports.default = AsyncReader; + // 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; -/***/ "../../node_modules/@nodelib/fs.walk/out/readers/common.js": -/***/ (function(module, exports, __webpack_require__) { + const onDone = item.onDone || noop; + item.onDone = function () { + events.onProgress(item.dest); + onDone(); + }; + } + events.onStart(queue.length); -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -function isFatalError(settings, error) { - if (settings.errorFilter === null) { - return true; - } - return !settings.errorFilter(error); -} -exports.isFatalError = isFatalError; -function isAppliedFilter(filter, value) { - return filter === null || filter(value); -} -exports.isAppliedFilter = isAppliedFilter; -function replacePathSegmentSeparator(filepath, separator) { - return filepath.split(/[\\/]/).join(separator); -} -exports.replacePathSegmentSeparator = replacePathSegmentSeparator; -function joinPathSegments(a, b, separator) { - if (a === '') { - return b; - } - return a + separator + b; -} -exports.joinPathSegments = joinPathSegments; + // 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; -/***/ "../../node_modules/@nodelib/fs.walk/out/readers/reader.js": -/***/ (function(module, exports, __webpack_require__) { + if (_isArray8) { + if (_i8 >= _iterator8.length) break; + _ref11 = _iterator8[_i8++]; + } else { + _i8 = _iterator8.next(); + if (_i8.done) break; + _ref11 = _i8.value; + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const common = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/common.js"); -class Reader { - constructor(_root, _settings) { - this._root = _root; - this._settings = _settings; - this._root = common.replacePathSegmentSeparator(_root, _settings.pathSegmentSeparator); - } -} -exports.default = Reader; + 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; -/***/ "../../node_modules/@nodelib/fs.walk/out/readers/sync.js": -/***/ (function(module, exports, __webpack_require__) { + if (_isArray9) { + if (_i9 >= _iterator9.length) break; + _ref12 = _iterator9[_i9++]; + } else { + _i9 = _iterator9.next(); + if (_i9.done) break; + _ref12 = _i9.value; + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const fsScandir = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/index.js"); -const common = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/common.js"); -const reader_1 = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/readers/reader.js"); -class SyncReader extends reader_1.default { - constructor() { - super(...arguments); - this._scandir = fsScandir.scandirSync; - this._storage = new Set(); - this._queue = new Set(); - } - read() { - this._pushToQueue(this._root, this._settings.basePath); - this._handleQueue(); - return [...this._storage]; - } - _pushToQueue(directory, base) { - this._queue.add({ directory, base }); - } - _handleQueue() { - for (const item of this._queue.values()) { - this._handleDirectory(item.directory, item.base); - } - } - _handleDirectory(directory, base) { - try { - const entries = this._scandir(directory, this._settings.fsScandirSettings); - for (const entry of entries) { - this._handleEntry(entry, base); - } - } - catch (error) { - this._handleError(error); - } - } - _handleError(error) { - if (!common.isFatalError(this._settings, error)) { - return; - } - throw error; - } - _handleEntry(entry, base) { - const fullpath = entry.path; - if (base !== undefined) { - entry.path = common.joinPathSegments(base, entry.name, this._settings.pathSegmentSeparator); - } - if (common.isAppliedFilter(this._settings.entryFilter, entry)) { - this._pushToStorage(entry); - } - if (entry.dirent.isDirectory() && common.isAppliedFilter(this._settings.deepFilter, entry)) { - this._pushToQueue(fullpath, entry.path); - } - } - _pushToStorage(entry) { - this._storage.add(entry); - } -} -exports.default = SyncReader; + const loc = _ref12; + if (files.has(loc.toLowerCase())) { + possibleExtraneous.delete(loc); + } + } -/***/ }), + return actions; + }); -/***/ "../../node_modules/@nodelib/fs.walk/out/settings.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __webpack_require__("path"); -const fsScandir = __webpack_require__("../../node_modules/@nodelib/fs.scandir/out/index.js"); -class Settings { - constructor(_options = {}) { - this._options = _options; - this.basePath = this._getValue(this._options.basePath, undefined); - this.concurrency = this._getValue(this._options.concurrency, Infinity); - this.deepFilter = this._getValue(this._options.deepFilter, null); - this.entryFilter = this._getValue(this._options.entryFilter, null); - this.errorFilter = this._getValue(this._options.errorFilter, null); - this.pathSegmentSeparator = this._getValue(this._options.pathSegmentSeparator, path.sep); - this.fsScandirSettings = new fsScandir.Settings({ - followSymbolicLinks: this._options.followSymbolicLinks, - fs: this._options.fs, - pathSegmentSeparator: this._options.pathSegmentSeparator, - stats: this._options.stats, - throwErrorOnBrokenSymbolicLink: this._options.throwErrorOnBrokenSymbolicLink - }); - } - _getValue(option, value) { - return option === undefined ? value : option; - } -} -exports.default = Settings; + 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); -/***/ "../../node_modules/@yarnpkg/lockfile/index.js": -/***/ (function(module, exports, __webpack_require__) { + const fileActions = actions.file; -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 = 14); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { + const currentlyWriting = new Map(); -module.exports = __webpack_require__("path"); + 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; + } -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { + 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; + }); -"use strict"; + 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); + }); + }); -exports.__esModule = true; + return function copyBulk(_x11, _x12, _x13) { + return _ref17.apply(this, arguments); + }; +})(); -var _promise = __webpack_require__(173); +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: [] + }; -var _promise2 = _interopRequireDefault(_promise); + const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter); + events.onStart(actions.file.length + actions.symlink.length + actions.link.length); -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + const fileActions = actions.link; -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; + 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); + }); - if (info.done) { - resolve(value); - } else { - return _promise2.default.resolve(value).then(function (value) { - step("next", value); - }, function (err) { - step("throw", err); - }); - } - } + return function (_x18) { + return _ref20.apply(this, arguments); + }; + })(), CONCURRENT_QUEUE_ITEMS); - return step("next"); + // 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); }); - }; -}; + }); -/***/ }), -/* 2 */ -/***/ (function(module, exports) { + return function hardlinkBulk(_x15, _x16, _x17) { + return _ref19.apply(this, arguments); + }; +})(); -module.exports = __webpack_require__("util"); +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; -/***/ }), -/* 3 */ -/***/ (function(module, exports) { + if (_isArray13) { + if (_i13 >= _iterator13.length) break; + _ref22 = _iterator13[_i13++]; + } else { + _i13 = _iterator13.next(); + if (_i13.done) break; + _ref22 = _i13.value; + } -module.exports = __webpack_require__("fs"); + const file = _ref22; -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { + if (yield exists(file)) { + return readFile(file); + } + } + return null; + }); -"use strict"; + 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; + }); -Object.defineProperty(exports, "__esModule", { - value: true -}); -class MessageError extends Error { - constructor(msg, code) { - super(msg); - this.code = code; - } + 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; + } + }); -exports.MessageError = MessageError; -class ProcessSpawnError extends MessageError { - constructor(msg, code, process) { - super(msg, code); - this.process = process; - } + 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); -exports.ProcessSpawnError = ProcessSpawnError; -class SecurityError extends MessageError {} + while (parts.length) { + const loc = parts.concat(filename).join((_path || _load_path()).default.sep); -exports.SecurityError = SecurityError; -class ProcessTermError extends MessageError {} + if (yield exists(loc)) { + return loc; + } else { + parts.pop(); + } + } -exports.ProcessTermError = ProcessTermError; -class ResponseError extends Error { - constructor(msg, responseCode) { - super(msg); - this.responseCode = responseCode; - } + return false; + }); -} -exports.ResponseError = ResponseError; + return function find(_x22, _x23) { + return _ref25.apply(this, arguments); + }; +})(); -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { +let symlink = exports.symlink = (() => { + var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { + try { + const stats = yield lstat(dest); + if (stats.isSymbolicLink()) { + const resolved = yield realpath(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); -"use strict"; + if (process.platform === 'win32') { + // use directory junctions if possible on win32, this requires absolute paths + yield fsSymlink(src, dest, 'junction'); + } else { + // use relative paths otherwise which will be retained if the directory is moved + let relative; + try { + relative = (_path || _load_path()).default.relative((_fs || _load_fs()).default.realpathSync((_path || _load_path()).default.dirname(dest)), (_fs || _load_fs()).default.realpathSync(src)); + } catch (err) { + if (err.code !== 'ENOENT') { + throw err; + } + relative = (_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. + yield fsSymlink(relative || '.', dest); + } + }); + return function symlink(_x24, _x25) { + return _ref26.apply(this, arguments); + }; +})(); -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; +let walk = exports.walk = (() => { + var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) { + let files = []; -var _asyncToGenerator2; + let filenames = yield readdir(dir); + if (ignoreBasenames.size) { + filenames = filenames.filter(function (name) { + return !ignoreBasenames.has(name); + }); + } -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); -} + for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { + var _ref28; -let buildActionsForCopy = (() => { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { + if (_isArray14) { + if (_i14 >= _iterator14.length) break; + _ref28 = _iterator14[_i14++]; + } else { + _i14 = _iterator14.next(); + if (_i14.done) break; + _ref28 = _i14.value; + } - // - let build = (() => { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - const src = data.src, - dest = data.dest, - type = data.type; + const name = _ref28; - const onFresh = data.onFresh || noop; - const onDone = data.onDone || noop; + 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); - // 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()); - } + files.push({ + relative, + basename: name, + absolute: loc, + mtime: +stat.mtime + }); - if (type === 'symlink') { - yield mkdirp((_path || _load_path()).default.dirname(dest)); - onFresh(); - actions.symlink.push({ - dest, - linkname: src - }); - onDone(); - return; - } + if (stat.isDirectory()) { + files = files.concat((yield walk(loc, relative, ignoreBasenames))); + } + } - if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } + return files; + }); - const srcStat = yield lstat(src); - let srcFiles; + return function walk(_x26, _x27) { + return _ref27.apply(this, arguments); + }; +})(); - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } +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; - 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(); + return Math.ceil(size / blockSize) * blockSize; + }); - // 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. + return function getFileSizeOnDisk(_x28) { + return _ref29.apply(this, arguments); + }; +})(); - /* if (srcStat.mode !== destStat.mode) { - try { - await access(dest, srcStat.mode); - } catch (err) {} - } */ +let getEolFromFile = (() => { + var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) { + if (!(yield exists(path))) { + return undefined; + } - 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; - } + const buffer = yield readFileBuffer(path); - 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; - } + for (let i = 0; i < buffer.length; ++i) { + if (buffer[i] === cr) { + return '\r\n'; + } + if (buffer[i] === lf) { + return '\n'; + } + } + return undefined; + }); - 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; - } - } + return function getEolFromFile(_x29) { + return _ref30.apply(this, arguments); + }; +})(); - 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; +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); + }); - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref8 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref8 = _i6.value; - } + return function writeFilePreservingEol(_x30, _x31) { + return _ref31.apply(this, arguments); + }; +})(); - const file = _ref8; +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; + }); - queue.push({ - dest: (_path || _load_path()).default.join(dest, file), - onFresh, - onDone: function (_onDone) { - function onDone() { - return _onDone.apply(this, arguments); - } + return function hardlinksWork(_x32) { + return _ref32.apply(this, arguments); + }; +})(); - onDone.toString = function () { - return _onDone.toString(); - }; +// not a strict polyfill for Node's fs.mkdtemp - 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); - }; - })(); +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; + }); - const artifactFiles = new Set(events.artifactFiles || []); - const files = new Set(); + return function makeTempDir(_x33) { + return _ref33.apply(this, arguments); + }; +})(); - // initialise events - for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref2; +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 (_isArray) { - if (_i >= _iterator.length) break; - _ref2 = _iterator[_i++]; + if (_isArray15) { + if (_i15 >= _iterator15.length) break; + _ref35 = _iterator15[_i15++]; } else { - _i = _iterator.next(); - if (_i.done) break; - _ref2 = _i.value; + _i15 = _iterator15.next(); + if (_i15.done) break; + _ref35 = _i15.value; } - const item = _ref2; + const path = _ref35; - const onDone = item.onDone; - item.onDone = function () { - events.onProgress(item.dest); - if (onDone) { - onDone(); - } - }; + try { + const fd = yield open(path, 'r'); + return (_fs || _load_fs()).default.createReadStream(path, { fd }); + } catch (err) { + // Try the next one + } } - events.onStart(queue.length); + return null; + }); - // start building actions - const actions = { - file: [], - symlink: [], - link: [] - }; + return function readFirstAvailableStream(_x34) { + return _ref34.apply(this, arguments); + }; +})(); - // 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)); - } +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 + }; - // 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; + for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { + var _ref37; - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref3 = _iterator2[_i2++]; + if (_isArray16) { + if (_i16 >= _iterator16.length) break; + _ref37 = _iterator16[_i16++]; } 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); + _i16 = _iterator16.next(); + if (_i16.done) break; + _ref37 = _i16.value; } - } - for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref4; + const folder = _ref37; - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref4 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref4 = _i3.value; - } + try { + yield mkdirp(folder); + yield access(folder, mode); - const loc = _ref4; + result.folder = folder; - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); + return result; + } catch (error) { + result.skipped.push({ + error, + folder + }); } } - - return actions; + return result; }); - return function buildActionsForCopy(_x, _x2, _x3, _x4) { - return _ref.apply(this, arguments); + return function getFirstSuitableFolder(_x35) { + return _ref36.apply(this, arguments); }; })(); -let buildActionsForHardlink = (() => { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { +exports.copy = copy; +exports.readFile = readFile; +exports.readFileRaw = readFileRaw; +exports.normalizeOS = normalizeOS; - // - let build = (() => { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - const src = data.src, - dest = data.dest; +var _fs; - 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()); +function _load_fs() { + return _fs = _interopRequireDefault(__webpack_require__(3)); +} - if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } +var _glob; - const srcStat = yield lstat(src); - let srcFiles; +function _load_glob() { + return _glob = _interopRequireDefault(__webpack_require__(75)); +} - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } +var _os; - const destExists = yield exists(dest); - if (destExists) { - const destStat = yield lstat(dest); +function _load_os() { + return _os = _interopRequireDefault(__webpack_require__(36)); +} - const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - const bothFiles = srcStat.isFile() && destStat.isFile(); +var _path; - 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); - } - } +function _load_path() { + return _path = _interopRequireDefault(__webpack_require__(0)); +} - 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; - } +var _blockingQueue; - // correct hardlink - if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) { - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino)); - return; - } +function _load_blockingQueue() { + return _blockingQueue = _interopRequireDefault(__webpack_require__(84)); +} - 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; - } - } +var _promise; - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - const destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); +function _load_promise() { + return _promise = _interopRequireWildcard(__webpack_require__(40)); +} - for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { - var _ref14; +var _promise2; - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref14 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref14 = _i10.value; - } +function _load_promise2() { + return _promise2 = __webpack_require__(40); +} - const file = _ref14; +var _map; - if (srcFiles.indexOf(file) < 0) { - const loc = (_path || _load_path()).default.join(dest, file); - possibleExtraneous.add(loc); +function _load_map() { + return _map = _interopRequireDefault(__webpack_require__(20)); +} - 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; +var _fsNormalized; - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref15 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref15 = _i11.value; - } +function _load_fsNormalized() { + return _fsNormalized = __webpack_require__(164); +} - const file = _ref15; +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; } } - possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); - } - } - } - } - } - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - 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 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 destParts = dest.split((_path || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } +const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock'); - // 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; +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__(116)); +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; - if (_isArray12) { - if (_i12 >= _iterator12.length) break; - _ref16 = _iterator12[_i12++]; - } else { - _i12 = _iterator12.next(); - if (_i12.done) break; - _ref16 = _i12.value; - } +// 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 file = _ref16; +const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4; - 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); - } +const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink); +const invariant = __webpack_require__(7); +const stripBOM = __webpack_require__(122); - onDone.toString = function () { - return _onDone2.toString(); - }; +const noop = () => {}; - 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; +function copy(src, dest, reporter) { + return copyBulk([{ src, dest }], reporter); +} - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref10 = _iterator7[_i7++]; +function _readFile(loc, encoding) { + return new Promise((resolve, reject) => { + (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) { + if (err) { + reject(err); } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref10 = _i7.value; + resolve(content); } + }); + }); +} - const item = _ref10; +function readFile(loc) { + return _readFile(loc, 'utf8').then(normalizeOS); +} - const onDone = item.onDone || noop; - item.onDone = function () { - events.onProgress(item.dest); - onDone(); - }; - } - events.onStart(queue.length); +function readFileRaw(loc) { + return _readFile(loc, 'binary'); +} - // start building actions - const actions = { - file: [], - symlink: [], - link: [] - }; +function normalizeOS(body) { + return body.replace(/\r\n/g, '\n'); +} - // 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)); - } +const cr = '\r'.charCodeAt(0); +const lf = '\n'.charCodeAt(0); - // 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; +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref11 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref11 = _i8.value; - } +"use strict"; - const file = _ref11; - if (possibleExtraneous.has(file)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); - possibleExtraneous.delete(file); - } - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getPathKey = getPathKey; +const os = __webpack_require__(36); +const path = __webpack_require__(0); +const userHome = __webpack_require__(45).default; - for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { - var _ref12; +var _require = __webpack_require__(171); - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref12 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref12 = _i9.value; - } +const getCacheDir = _require.getCacheDir, + getConfigDir = _require.getConfigDir, + getDataDir = _require.getDataDir; - const loc = _ref12; +const isWebpackBundle = __webpack_require__(227); - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } - } +const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies']; +const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions'; +const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES]; - return actions; - }); +const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0'; - return function buildActionsForHardlink(_x6, _x7, _x8, _x9) { - return _ref9.apply(this, arguments); - }; -})(); +const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com'; -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 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 actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); +const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version'; - const fileActions = actions.file; +// cache version, bump whenever we make backwards incompatible changes +const CACHE_VERSION = exports.CACHE_VERSION = 2; - const currentlyWriting = new Map(); +// lockfile version, bump whenever we make backwards incompatible changes +const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1; - 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; - } +// max amount of network requests to perform concurrently +const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8; - 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; - }); +// HTTP timeout used when downloading packages +const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds - return function (_x14) { - return _ref18.apply(this, arguments); - }; - })(), CONCURRENT_QUEUE_ITEMS); +// max amount of child processes to execute concurrently +const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5; - // 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); - }); - }); +const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid']; - return function copyBulk(_x11, _x12, _x13) { - return _ref17.apply(this, arguments); - }; -})(); +function getPreferredCacheDirectories() { + const preferredCacheDirectories = [getCacheDir()]; -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: [] - }; + if (process.getuid) { + // $FlowFixMe: process.getuid exists, dammit + preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`)); + } - const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); + preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`)); - const fileActions = actions.link; + return preferredCacheDirectories; +} - 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); - }); +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'); - return function (_x18) { - return _ref20.apply(this, arguments); - }; - })(), CONCURRENT_QUEUE_ITEMS); +const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath; +const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath(); - // 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); - }); - }); +// Webpack needs to be configured with node.__dirname/__filename = false +function getYarnBinPath() { + if (isWebpackBundle) { + return __filename; + } else { + return path.join(__dirname, '..', 'bin', 'yarn.js'); + } +} - return function hardlinkBulk(_x15, _x16, _x17) { - return _ref19.apply(this, arguments); - }; -})(); +const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules'; +const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json'; -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; +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'); - if (_isArray13) { - if (_i13 >= _iterator13.length) break; - _ref22 = _iterator13[_i13++]; - } else { - _i13 = _iterator13.next(); - if (_i13.done) break; - _ref22 = _i13.value; - } +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 file = _ref22; +const NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json'; +const NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json'; - if (yield exists(file)) { - return readFile(file); - } - } - return null; - }); +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'; - return function readFileAny(_x19) { - return _ref21.apply(this, arguments); - }; -})(); +const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env); -let readJson = exports.readJson = (() => { - var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - return (yield readJsonAndFile(loc)).object; - }); +function getPathKey(platform, env) { + let pathKey = 'PATH'; - return function readJson(_x20) { - return _ref23.apply(this, arguments); - }; -})(); + // windows calls its path "Path" usually, but this is not guaranteed. + if (platform === 'win32') { + pathKey = 'Path'; -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; + for (const key in env) { + if (key.toLowerCase() === 'path') { + pathKey = key; + } } - }); + } - return function readJsonAndFile(_x21) { - return _ref24.apply(this, arguments); - }; -})(); + return pathKey; +} -let find = exports.find = (() => { - var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) { - const parts = dir.split((_path || _load_path()).default.sep); +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' +}; - while (parts.length) { - const loc = parts.concat(filename).join((_path || _load_path()).default.sep); +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { - if (yield exists(loc)) { - return loc; - } else { - parts.pop(); - } - } +"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. + */ - 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) { - try { - const stats = yield lstat(dest); - if (stats.isSymbolicLink()) { - const resolved = yield realpath(dest); - if (resolved === src) { - return; - } - } - } catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } +/** + * 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 = "production"; + +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'); } - // 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'); + 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 { - // use relative paths otherwise which will be retained if the directory is moved - let relative; - try { - relative = (_path || _load_path()).default.relative((_fs || _load_fs()).default.realpathSync((_path || _load_path()).default.dirname(dest)), (_fs || _load_fs()).default.realpathSync(src)); - } catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } - relative = (_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. - yield fsSymlink(relative || '.', dest); + 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'; } - }); - - 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 = []; + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +}; - let filenames = yield readdir(dir); - if (ignoreBasenames.size) { - filenames = filenames.filter(function (name) { - return !ignoreBasenames.has(name); - }); - } +module.exports = invariant; - 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; - } +/***/ }), +/* 8 */, +/* 9 */ +/***/ (function(module, exports) { - const name = _ref28; +module.exports = __webpack_require__("crypto"); - 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); +/***/ }), +/* 10 */, +/* 11 */ +/***/ (function(module, exports) { - files.push({ - relative, - basename: name, - absolute: loc, - mtime: +stat.mtime - }); +// 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 - if (stat.isDirectory()) { - files = files.concat((yield walk(loc, relative, ignoreBasenames))); - } - } - return files; - }); +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { - return function walk(_x26, _x27) { - return _ref27.apply(this, arguments); - }; -})(); +"use strict"; -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; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.sortAlpha = sortAlpha; +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__(176); - 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; +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; +} - 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'; - } +function entries(obj) { + const entries = []; + if (obj) { + for (const key in obj) { + entries.push([key, obj[key]]); } - return undefined; - }); - - return function getEolFromFile(_x29) { - return _ref30.apply(this, arguments); - }; -})(); + } + return entries; +} -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); - }); +function removePrefix(pattern, prefix) { + if (pattern.startsWith(prefix)) { + pattern = pattern.slice(prefix.length); + } - return function writeFilePreservingEol(_x30, _x31) { - return _ref31.apply(this, arguments); - }; -})(); + return pattern; +} -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; - }); +function removeSuffix(pattern, suffix) { + if (pattern.endsWith(suffix)) { + return pattern.slice(0, -suffix.length); + } - return function hardlinksWork(_x32) { - return _ref32.apply(this, arguments); - }; -})(); + return pattern; +} -// not a strict polyfill for Node's fs.mkdtemp +function addSuffix(pattern, suffix) { + if (!pattern.endsWith(suffix)) { + return pattern + suffix; + } + return pattern; +} -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; +function hyphenate(str) { + return str.replace(/[A-Z]/g, match => { + return '-' + match.charAt(0).toLowerCase(); }); +} - 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; +function camelCase(str) { + if (/[A-Z]/.test(str)) { + return null; + } else { + return _camelCase(str); + } +} - try { - const fd = yield open(path, 'r'); - return (_fs || _load_fs()).default.createReadStream(path, { fd }); - } catch (err) { - // Try the next one - } +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 null; - }); + } + return true; +} - return function readFirstAvailableStream(_x34) { - return _ref34.apply(this, arguments); - }; -})(); +function sleep(ms) { + return new Promise(resolve => { + setTimeout(resolve, ms); + }); +} -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 - }; +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { - for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { - var _ref37; +var store = __webpack_require__(107)('wks'); +var uid = __webpack_require__(111); +var Symbol = __webpack_require__(11).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; - if (_isArray16) { - if (_i16 >= _iterator16.length) break; - _ref37 = _iterator16[_i16++]; - } else { - _i16 = _iterator16.next(); - if (_i16.done) break; - _ref37 = _i16.value; - } +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; - const folder = _ref37; +$exports.store = store; - try { - yield mkdirp(folder); - yield access(folder, mode); - result.folder = folder; +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { - return result; - } catch (error) { - result.skipped.push({ - error, - folder - }); - } - } - return result; - }); +"use strict"; - return function getFirstSuitableFolder(_x35) { - return _ref36.apply(this, arguments); - }; -})(); -exports.copy = copy; -exports.readFile = readFile; -exports.readFileRaw = readFileRaw; -exports.normalizeOS = normalizeOS; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.stringify = exports.parse = undefined; -var _fs; +var _asyncToGenerator2; -function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(3)); +function _load_asyncToGenerator() { + return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(1)); } -var _glob; +var _parse; -function _load_glob() { - return _glob = _interopRequireDefault(__webpack_require__(75)); +function _load_parse() { + return _parse = __webpack_require__(81); } -var _os; - -function _load_os() { - return _os = _interopRequireDefault(__webpack_require__(36)); -} +Object.defineProperty(exports, 'parse', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_parse || _load_parse()).default; + } +}); -var _path; +var _stringify; -function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(0)); +function _load_stringify() { + return _stringify = __webpack_require__(150); } -var _blockingQueue; +Object.defineProperty(exports, 'stringify', { + enumerable: true, + get: function get() { + return _interopRequireDefault(_stringify || _load_stringify()).default; + } +}); +exports.implodeEntry = implodeEntry; +exports.explodeEntry = explodeEntry; -function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(84)); +var _misc; + +function _load_misc() { + return _misc = __webpack_require__(12); } -var _promise; +var _normalizePattern; -function _load_promise() { - return _promise = _interopRequireWildcard(__webpack_require__(40)); +function _load_normalizePattern() { + return _normalizePattern = __webpack_require__(29); } -var _promise2; +var _parse2; -function _load_promise2() { - return _promise2 = __webpack_require__(40); +function _load_parse2() { + return _parse2 = _interopRequireDefault(__webpack_require__(81)); } -var _map; +var _constants; -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(20)); +function _load_constants() { + return _constants = __webpack_require__(6); } -var _fsNormalized; +var _fs; -function _load_fsNormalized() { - return _fsNormalized = __webpack_require__(164); +function _load_fs() { + return _fs = _interopRequireWildcard(__webpack_require__(5)); } 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__(116)); -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__(7); -const stripBOM = __webpack_require__(122); -const noop = () => {}; +const path = __webpack_require__(0); +const ssri = __webpack_require__(55); -function copy(src, dest, reporter) { - return copyBulk([{ src, dest }], reporter); +function getName(pattern) { + return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name; } -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 blankObjectUndefined(obj) { + return obj && Object.keys(obj).length ? obj : undefined; } -function readFile(loc) { - return _readFile(loc, 'utf8').then(normalizeOS); +function keyForRemote(remote) { + return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null); } -function readFileRaw(loc) { - return _readFile(loc, 'binary'); +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 normalizeOS(body) { - return body.replace(/\r\n/g, '\n'); +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; } -const cr = '\r'.charCodeAt(0); -const lf = '\n'.charCodeAt(0); - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - +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; +} -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getPathKey = getPathKey; -const os = __webpack_require__(36); -const path = __webpack_require__(0); -const userHome = __webpack_require__(45).default; +class Lockfile { + constructor({ cache, source, parseResultType } = {}) { + this.source = source || ''; + this.cache = cache; + this.parseResultType = parseResultType; + } -var _require = __webpack_require__(171); + // source string if the `cache` was parsed -const getCacheDir = _require.getCacheDir, - getConfigDir = _require.getConfigDir, - getDataDir = _require.getDataDir; -const isWebpackBundle = __webpack_require__(227); + // if true, we're parsing an old yarn file and need to update integrity fields + hasEntriesExistWithoutIntegrity() { + if (!this.cache) { + return false; + } -const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies']; -const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions'; -const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES]; + 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; + } + } -const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0'; + return false; + } -const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com'; + 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); -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'; + let lockfile; + let rawLockfile = ''; + let parseResult; -const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version'; + if (yield (_fs || _load_fs()).exists(lockfileLoc)) { + rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc); + parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc); -// cache version, bump whenever we make backwards incompatible changes -const CACHE_VERSION = exports.CACHE_VERSION = 2; + if (reporter) { + if (parseResult.type === 'merge') { + reporter.info(reporter.lang('lockfileMerged')); + } else if (parseResult.type === 'conflict') { + reporter.warn(reporter.lang('lockfileConflict')); + } + } -// lockfile version, bump whenever we make backwards incompatible changes -const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1; + lockfile = parseResult.object; + } else if (reporter) { + reporter.info(reporter.lang('noLockfileFound')); + } -// max amount of network requests to perform concurrently -const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8; + return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type }); + })(); + } -// HTTP timeout used when downloading packages -const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds + getLocked(pattern) { + const cache = this.cache; + if (!cache) { + return undefined; + } -// max amount of child processes to execute concurrently -const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5; + const shrunk = pattern in cache && cache[pattern]; -const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid']; + if (typeof shrunk === 'string') { + return this.getLocked(shrunk); + } else if (shrunk) { + explodeEntry(pattern, shrunk); + return shrunk; + } -function getPreferredCacheDirectories() { - const preferredCacheDirectories = [getCacheDir()]; + return undefined; + } - if (process.getuid) { - // $FlowFixMe: process.getuid exists, dammit - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`)); + removePattern(pattern) { + const cache = this.cache; + if (!cache) { + return; + } + delete cache[pattern]; } - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`)); + getLockfile(patterns) { + const lockfile = {}; + const seen = new Map(); - return preferredCacheDirectories; -} + // 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); -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 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' -}; - -/***/ }), -/* 7 */ -/***/ (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 = "production"; - -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; - - -/***/ }), -/* 8 */, -/* 9 */ -/***/ (function(module, exports) { - -module.exports = __webpack_require__("crypto"); - -/***/ }), -/* 10 */, -/* 11 */ -/***/ (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 - - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.sortAlpha = sortAlpha; -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__(176); - -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 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); - }); -} - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(107)('wks'); -var uid = __webpack_require__(111); -var Symbol = __webpack_require__(11).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; - - -/***/ }), -/* 14 */ -/***/ (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__(1)); -} - -var _parse; - -function _load_parse() { - return _parse = __webpack_require__(81); -} - -Object.defineProperty(exports, 'parse', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_parse || _load_parse()).default; - } -}); - -var _stringify; - -function _load_stringify() { - return _stringify = __webpack_require__(150); -} - -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__(12); -} - -var _normalizePattern; - -function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(29); -} - -var _parse2; - -function _load_parse2() { - return _parse2 = _interopRequireDefault(__webpack_require__(81)); -} - -var _constants; - -function _load_constants() { - return _constants = __webpack_require__(6); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(5)); -} - -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__(7); - -const path = __webpack_require__(0); -const ssri = __webpack_require__(55); - -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')); - } - - 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; + 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; @@ -16304,128 +15178,6 @@ module.exports = function (fromModel) { -/***/ }), - -/***/ "../../node_modules/arr-diff/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * arr-diff - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -module.exports = function diff(arr/*, arrays*/) { - var len = arguments.length; - var idx = 0; - while (++idx < len) { - arr = diffArray(arr, arguments[idx]); - } - return arr; -}; - -function diffArray(one, two) { - if (!Array.isArray(two)) { - return one.slice(); - } - - var tlen = two.length - var olen = one.length; - var idx = -1; - var arr = []; - - while (++idx < olen) { - var ele = one[idx]; - - var hasEle = false; - for (var i = 0; i < tlen; i++) { - var val = two[i]; - - if (ele === val) { - hasEle = true; - break; - } - } - - if (hasEle === false) { - arr.push(ele); - } - } - return arr; -} - - -/***/ }), - -/***/ "../../node_modules/arr-flatten/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * arr-flatten - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -module.exports = function (arr) { - return flat(arr, []); -}; - -function flat(arr, res) { - var i = 0, cur; - var len = arr.length; - for (; i < len; i++) { - cur = arr[i]; - Array.isArray(cur) ? flat(cur, res) : res.push(cur); - } - return res; -} - - -/***/ }), - -/***/ "../../node_modules/arr-union/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = function union(init) { - if (!Array.isArray(init)) { - throw new TypeError('arr-union expects the first argument to be an array.'); - } - - var len = arguments.length; - var i = 0; - - while (++i < len) { - var arg = arguments[i]; - if (!arg) continue; - - if (!Array.isArray(arg)) { - arg = [arg]; - } - - for (var j = 0; j < arg.length; j++) { - var ele = arg[j]; - - if (init.indexOf(ele) >= 0) { - continue; - } - init.push(ele); - } - } - return init; -}; - - /***/ }), /***/ "../../node_modules/array-differ/index.js": @@ -16455,127 +15207,6 @@ module.exports = (...arguments_) => { }; -/***/ }), - -/***/ "../../node_modules/array-uniq/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -// there's 3 implementations written in increasing order of efficiency - -// 1 - no Set type is defined -function uniqNoSet(arr) { - var ret = []; - - for (var i = 0; i < arr.length; i++) { - if (ret.indexOf(arr[i]) === -1) { - ret.push(arr[i]); - } - } - - return ret; -} - -// 2 - a simple Set type is defined -function uniqSet(arr) { - var seen = new Set(); - return arr.filter(function (el) { - if (!seen.has(el)) { - seen.add(el); - return true; - } - - return false; - }); -} - -// 3 - a standard Set type is defined and it has a forEach method -function uniqSetWithForEach(arr) { - var ret = []; - - (new Set(arr)).forEach(function (el) { - ret.push(el); - }); - - return ret; -} - -// V8 currently has a broken implementation -// https://github.com/joyent/node/issues/8449 -function doesForEachActuallyWork() { - var ret = false; - - (new Set([true])).forEach(function (el) { - ret = el; - }); - - return ret === true; -} - -if ('Set' in global) { - if (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) { - module.exports = uniqSetWithForEach; - } else { - module.exports = uniqSet; - } -} else { - module.exports = uniqNoSet; -} - - -/***/ }), - -/***/ "../../node_modules/array-unique/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * array-unique - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -module.exports = function unique(arr) { - if (!Array.isArray(arr)) { - throw new TypeError('array-unique expects an array.'); - } - - var len = arr.length; - var i = -1; - - while (i++ < len) { - var j = i + 1; - - for (; j < arr.length; ++j) { - if (arr[i] === arr[j]) { - arr.splice(j--, 1); - } - } - } - return arr; -}; - -module.exports.immutable = function uniqueImmutable(arr) { - if (!Array.isArray(arr)) { - throw new TypeError('array-unique expects an array.'); - } - - var arrLen = arr.length; - var newArr = new Array(arrLen); - - for (var i = 0; i < arrLen; i++) { - newArr[i] = arr[i]; - } - - return module.exports(newArr); -}; - - /***/ }), /***/ "../../node_modules/arrify/index.js": @@ -16607,69 +15238,6 @@ const arrify = value => { module.exports = arrify; -/***/ }), - -/***/ "../../node_modules/assign-symbols/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * assign-symbols - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -module.exports = function(receiver, objects) { - if (receiver === null || typeof receiver === 'undefined') { - throw new TypeError('expected first argument to be an object.'); - } - - if (typeof objects === 'undefined' || typeof Symbol === 'undefined') { - return receiver; - } - - if (typeof Object.getOwnPropertySymbols !== 'function') { - return receiver; - } - - var isEnumerable = Object.prototype.propertyIsEnumerable; - var target = Object(receiver); - var len = arguments.length, i = 0; - - while (++i < len) { - var provider = Object(arguments[i]); - var names = Object.getOwnPropertySymbols(provider); - - for (var j = 0; j < names.length; j++) { - var key = names[j]; - - if (isEnumerable.call(provider, key)) { - target[key] = provider[key]; - } - } - } - return target; -}; - - -/***/ }), - -/***/ "../../node_modules/atob/node-atob.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function atob(str) { - return Buffer.from(str, 'base64').toString('binary'); -} - -module.exports = atob.atob = atob; - - /***/ }), /***/ "../../node_modules/axios/index.js": @@ -18806,488 +17374,6 @@ function range(a, b, str) { } -/***/ }), - -/***/ "../../node_modules/base/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var util = __webpack_require__("util"); -var define = __webpack_require__("../../node_modules/base/node_modules/define-property/index.js"); -var CacheBase = __webpack_require__("../../node_modules/cache-base/index.js"); -var Emitter = __webpack_require__("../../node_modules/component-emitter/index.js"); -var isObject = __webpack_require__("../../node_modules/isobject/index.js"); -var merge = __webpack_require__("../../node_modules/mixin-deep/index.js"); -var pascal = __webpack_require__("../../node_modules/pascalcase/index.js"); -var cu = __webpack_require__("../../node_modules/class-utils/index.js"); - -/** - * Optionally define a custom `cache` namespace to use. - */ - -function namespace(name) { - var Cache = name ? CacheBase.namespace(name) : CacheBase; - var fns = []; - - /** - * Create an instance of `Base` with the given `config` and `options`. - * - * ```js - * // initialize with `config` and `options` - * var app = new Base({isApp: true}, {abc: true}); - * app.set('foo', 'bar'); - * - * // values defined with the given `config` object will be on the root of the instance - * console.log(app.baz); //=> undefined - * console.log(app.foo); //=> 'bar' - * // or use `.get` - * console.log(app.get('isApp')); //=> true - * console.log(app.get('foo')); //=> 'bar' - * - * // values defined with the given `options` object will be on `app.options - * console.log(app.options.abc); //=> true - * ``` - * - * @param {Object} `config` If supplied, this object is passed to [cache-base][] to merge onto the the instance upon instantiation. - * @param {Object} `options` If supplied, this object is used to initialize the `base.options` object. - * @api public - */ - - function Base(config, options) { - if (!(this instanceof Base)) { - return new Base(config, options); - } - Cache.call(this, config); - this.is('base'); - this.initBase(config, options); - } - - /** - * Inherit cache-base - */ - - util.inherits(Base, Cache); - - /** - * Add static emitter methods - */ - - Emitter(Base); - - /** - * Initialize `Base` defaults with the given `config` object - */ - - Base.prototype.initBase = function(config, options) { - this.options = merge({}, this.options, options); - this.cache = this.cache || {}; - this.define('registered', {}); - if (name) this[name] = {}; - - // make `app._callbacks` non-enumerable - this.define('_callbacks', this._callbacks); - if (isObject(config)) { - this.visit('set', config); - } - Base.run(this, 'use', fns); - }; - - /** - * Set the given `name` on `app._name` and `app.is*` properties. Used for doing - * lookups in plugins. - * - * ```js - * app.is('foo'); - * console.log(app._name); - * //=> 'foo' - * console.log(app.isFoo); - * //=> true - * app.is('bar'); - * console.log(app.isFoo); - * //=> true - * console.log(app.isBar); - * //=> true - * console.log(app._name); - * //=> 'bar' - * ``` - * @name .is - * @param {String} `name` - * @return {Boolean} - * @api public - */ - - Base.prototype.is = function(name) { - if (typeof name !== 'string') { - throw new TypeError('expected name to be a string'); - } - this.define('is' + pascal(name), true); - this.define('_name', name); - this.define('_appname', name); - return this; - }; - - /** - * Returns true if a plugin has already been registered on an instance. - * - * Plugin implementors are encouraged to use this first thing in a plugin - * to prevent the plugin from being called more than once on the same - * instance. - * - * ```js - * var base = new Base(); - * base.use(function(app) { - * if (app.isRegistered('myPlugin')) return; - * // do stuff to `app` - * }); - * - * // to also record the plugin as being registered - * base.use(function(app) { - * if (app.isRegistered('myPlugin', true)) return; - * // do stuff to `app` - * }); - * ``` - * @name .isRegistered - * @emits `plugin` Emits the name of the plugin being registered. Useful for unit tests, to ensure plugins are only registered once. - * @param {String} `name` The plugin name. - * @param {Boolean} `register` If the plugin if not already registered, to record it as being registered pass `true` as the second argument. - * @return {Boolean} Returns true if a plugin is already registered. - * @api public - */ - - Base.prototype.isRegistered = function(name, register) { - if (this.registered.hasOwnProperty(name)) { - return true; - } - if (register !== false) { - this.registered[name] = true; - this.emit('plugin', name); - } - return false; - }; - - /** - * Define a plugin function to be called immediately upon init. Plugins are chainable - * and expose the following arguments to the plugin function: - * - * - `app`: the current instance of `Base` - * - `base`: the [first ancestor instance](#base) of `Base` - * - * ```js - * var app = new Base() - * .use(foo) - * .use(bar) - * .use(baz) - * ``` - * @name .use - * @param {Function} `fn` plugin function to call - * @return {Object} Returns the item instance for chaining. - * @api public - */ - - Base.prototype.use = function(fn) { - fn.call(this, this); - return this; - }; - - /** - * The `.define` method is used for adding non-enumerable property on the instance. - * Dot-notation is **not supported** with `define`. - * - * ```js - * // arbitrary `render` function using lodash `template` - * app.define('render', function(str, locals) { - * return _.template(str)(locals); - * }); - * ``` - * @name .define - * @param {String} `key` The name of the property to define. - * @param {any} `value` - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Base.prototype.define = function(key, val) { - if (isObject(key)) { - return this.visit('define', key); - } - define(this, key, val); - return this; - }; - - /** - * Mix property `key` onto the Base prototype. If base is inherited using - * `Base.extend` this method will be overridden by a new `mixin` method that will - * only add properties to the prototype of the inheriting application. - * - * ```js - * app.mixin('foo', function() { - * // do stuff - * }); - * ``` - * @name .mixin - * @param {String} `key` - * @param {Object|Array} `val` - * @return {Object} Returns the `base` instance for chaining. - * @api public - */ - - Base.prototype.mixin = function(key, val) { - Base.prototype[key] = val; - return this; - }; - - /** - * Non-enumberable mixin array, used by the static [Base.mixin]() method. - */ - - Base.prototype.mixins = Base.prototype.mixins || []; - - /** - * Getter/setter used when creating nested instances of `Base`, for storing a reference - * to the first ancestor instance. This works by setting an instance of `Base` on the `parent` - * property of a "child" instance. The `base` property defaults to the current instance if - * no `parent` property is defined. - * - * ```js - * // create an instance of `Base`, this is our first ("base") instance - * var first = new Base(); - * first.foo = 'bar'; // arbitrary property, to make it easier to see what's happening later - * - * // create another instance - * var second = new Base(); - * // create a reference to the first instance (`first`) - * second.parent = first; - * - * // create another instance - * var third = new Base(); - * // create a reference to the previous instance (`second`) - * // repeat this pattern every time a "child" instance is created - * third.parent = second; - * - * // we can always access the first instance using the `base` property - * console.log(first.base.foo); - * //=> 'bar' - * console.log(second.base.foo); - * //=> 'bar' - * console.log(third.base.foo); - * //=> 'bar' - * // and now you know how to get to third base ;) - * ``` - * @name .base - * @api public - */ - - Object.defineProperty(Base.prototype, 'base', { - configurable: true, - get: function() { - return this.parent ? this.parent.base : this; - } - }); - - /** - * Static method for adding global plugin functions that will - * be added to an instance when created. - * - * ```js - * Base.use(function(app) { - * app.foo = 'bar'; - * }); - * var app = new Base(); - * console.log(app.foo); - * //=> 'bar' - * ``` - * @name #use - * @param {Function} `fn` Plugin function to use on each instance. - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'use', function(fn) { - fns.push(fn); - return Base; - }); - - /** - * Run an array of functions by passing each function - * to a method on the given object specified by the given property. - * - * @param {Object} `obj` Object containing method to use. - * @param {String} `prop` Name of the method on the object to use. - * @param {Array} `arr` Array of functions to pass to the method. - */ - - define(Base, 'run', function(obj, prop, arr) { - var len = arr.length, i = 0; - while (len--) { - obj[prop](arr[i++]); - } - return Base; - }); - - /** - * Static method for inheriting the prototype and static methods of the `Base` class. - * This method greatly simplifies the process of creating inheritance-based applications. - * See [static-extend][] for more details. - * - * ```js - * var extend = cu.extend(Parent); - * Parent.extend(Child); - * - * // optional methods - * Parent.extend(Child, { - * foo: function() {}, - * bar: function() {} - * }); - * ``` - * @name #extend - * @param {Function} `Ctor` constructor to extend - * @param {Object} `methods` Optional prototype properties to mix in. - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'extend', cu.extend(Base, function(Ctor, Parent) { - Ctor.prototype.mixins = Ctor.prototype.mixins || []; - - define(Ctor, 'mixin', function(fn) { - var mixin = fn(Ctor.prototype, Ctor); - if (typeof mixin === 'function') { - Ctor.prototype.mixins.push(mixin); - } - return Ctor; - }); - - define(Ctor, 'mixins', function(Child) { - Base.run(Child, 'mixin', Ctor.prototype.mixins); - return Ctor; - }); - - Ctor.prototype.mixin = function(key, value) { - Ctor.prototype[key] = value; - return this; - }; - return Base; - })); - - /** - * Used for adding methods to the `Base` prototype, and/or to the prototype of child instances. - * When a mixin function returns a function, the returned function is pushed onto the `.mixins` - * array, making it available to be used on inheriting classes whenever `Base.mixins()` is - * called (e.g. `Base.mixins(Child)`). - * - * ```js - * Base.mixin(function(proto) { - * proto.foo = function(msg) { - * return 'foo ' + msg; - * }; - * }); - * ``` - * @name #mixin - * @param {Function} `fn` Function to call - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'mixin', function(fn) { - var mixin = fn(Base.prototype, Base); - if (typeof mixin === 'function') { - Base.prototype.mixins.push(mixin); - } - return Base; - }); - - /** - * Static method for running global mixin functions against a child constructor. - * Mixins must be registered before calling this method. - * - * ```js - * Base.extend(Child); - * Base.mixins(Child); - * ``` - * @name #mixins - * @param {Function} `Child` Constructor function of a child class - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'mixins', function(Child) { - Base.run(Child, 'mixin', Base.prototype.mixins); - return Base; - }); - - /** - * Similar to `util.inherit`, but copies all static properties, prototype properties, and - * getters/setters from `Provider` to `Receiver`. See [class-utils][]{#inherit} for more details. - * - * ```js - * Base.inherit(Foo, Bar); - * ``` - * @name #inherit - * @param {Function} `Receiver` Receiving (child) constructor - * @param {Function} `Provider` Providing (parent) constructor - * @return {Object} Returns the `Base` constructor for chaining - * @api public - */ - - define(Base, 'inherit', cu.inherit); - define(Base, 'bubble', cu.bubble); - return Base; -} - -/** - * Expose `Base` with default settings - */ - -module.exports = namespace(); - -/** - * Allow users to define a namespace - */ - -module.exports.namespace = namespace; - - -/***/ }), - -/***/ "../../node_modules/base/node_modules/define-property/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * define-property - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isDescriptor = __webpack_require__("../../node_modules/is-descriptor/index.js"); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; - - /***/ }), /***/ "../../node_modules/brace-expansion/index.js": @@ -20426,366 +18512,6 @@ exports.flatten = (...args) => { }; -/***/ }), - -/***/ "../../node_modules/cache-base/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isObject = __webpack_require__("../../node_modules/isobject/index.js"); -var Emitter = __webpack_require__("../../node_modules/component-emitter/index.js"); -var visit = __webpack_require__("../../node_modules/collection-visit/index.js"); -var toPath = __webpack_require__("../../node_modules/to-object-path/index.js"); -var union = __webpack_require__("../../node_modules/union-value/index.js"); -var del = __webpack_require__("../../node_modules/unset-value/index.js"); -var get = __webpack_require__("../../node_modules/get-value/index.js"); -var has = __webpack_require__("../../node_modules/has-value/index.js"); -var set = __webpack_require__("../../node_modules/cache-base/node_modules/set-value/index.js"); - -/** - * Create a `Cache` constructor that when instantiated will - * store values on the given `prop`. - * - * ```js - * var Cache = require('cache-base').namespace('data'); - * var cache = new Cache(); - * - * cache.set('foo', 'bar'); - * //=> {data: {foo: 'bar'}} - * ``` - * @param {String} `prop` The property name to use for storing values. - * @return {Function} Returns a custom `Cache` constructor - * @api public - */ - -function namespace(prop) { - - /** - * Create a new `Cache`. Internally the `Cache` constructor is created using - * the `namespace` function, with `cache` defined as the storage object. - * - * ```js - * var app = new Cache(); - * ``` - * @param {Object} `cache` Optionally pass an object to initialize with. - * @constructor - * @api public - */ - - function Cache(cache) { - if (prop) { - this[prop] = {}; - } - if (cache) { - this.set(cache); - } - } - - /** - * Inherit Emitter - */ - - Emitter(Cache.prototype); - - /** - * Assign `value` to `key`. Also emits `set` with - * the key and value. - * - * ```js - * app.on('set', function(key, val) { - * // do something when `set` is emitted - * }); - * - * app.set(key, value); - * - * // also takes an object or array - * app.set({name: 'Halle'}); - * app.set([{foo: 'bar'}, {baz: 'quux'}]); - * console.log(app); - * //=> {name: 'Halle', foo: 'bar', baz: 'quux'} - * ``` - * - * @name .set - * @emits `set` with `key` and `value` as arguments. - * @param {String} `key` - * @param {any} `value` - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Cache.prototype.set = function(key, val) { - if (Array.isArray(key) && arguments.length === 2) { - key = toPath(key); - } - if (isObject(key) || Array.isArray(key)) { - this.visit('set', key); - } else { - set(prop ? this[prop] : this, key, val); - this.emit('set', key, val); - } - return this; - }; - - /** - * Union `array` to `key`. Also emits `set` with - * the key and value. - * - * ```js - * app.union('a.b', ['foo']); - * app.union('a.b', ['bar']); - * console.log(app.get('a')); - * //=> {b: ['foo', 'bar']} - * ``` - * @name .union - * @param {String} `key` - * @param {any} `value` - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Cache.prototype.union = function(key, val) { - if (Array.isArray(key) && arguments.length === 2) { - key = toPath(key); - } - var ctx = prop ? this[prop] : this; - union(ctx, key, arrayify(val)); - this.emit('union', val); - return this; - }; - - /** - * Return the value of `key`. Dot notation may be used - * to get [nested property values][get-value]. - * - * ```js - * app.set('a.b.c', 'd'); - * app.get('a.b'); - * //=> {c: 'd'} - * - * app.get(['a', 'b']); - * //=> {c: 'd'} - * ``` - * - * @name .get - * @emits `get` with `key` and `value` as arguments. - * @param {String} `key` The name of the property to get. Dot-notation may be used. - * @return {any} Returns the value of `key` - * @api public - */ - - Cache.prototype.get = function(key) { - key = toPath(arguments); - - var ctx = prop ? this[prop] : this; - var val = get(ctx, key); - - this.emit('get', key, val); - return val; - }; - - /** - * Return true if app has a stored value for `key`, - * false only if value is `undefined`. - * - * ```js - * app.set('foo', 'bar'); - * app.has('foo'); - * //=> true - * ``` - * - * @name .has - * @emits `has` with `key` and true or false as arguments. - * @param {String} `key` - * @return {Boolean} - * @api public - */ - - Cache.prototype.has = function(key) { - key = toPath(arguments); - - var ctx = prop ? this[prop] : this; - var val = get(ctx, key); - - var has = typeof val !== 'undefined'; - this.emit('has', key, has); - return has; - }; - - /** - * Delete one or more properties from the instance. - * - * ```js - * app.del(); // delete all - * // or - * app.del('foo'); - * // or - * app.del(['foo', 'bar']); - * ``` - * @name .del - * @emits `del` with the `key` as the only argument. - * @param {String|Array} `key` Property name or array of property names. - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Cache.prototype.del = function(key) { - if (Array.isArray(key)) { - this.visit('del', key); - } else { - del(prop ? this[prop] : this, key); - this.emit('del', key); - } - return this; - }; - - /** - * Reset the entire cache to an empty object. - * - * ```js - * app.clear(); - * ``` - * @api public - */ - - Cache.prototype.clear = function() { - if (prop) { - this[prop] = {}; - } - }; - - /** - * Visit `method` over the properties in the given object, or map - * visit over the object-elements in an array. - * - * @name .visit - * @param {String} `method` The name of the `base` method to call. - * @param {Object|Array} `val` The object or array to iterate over. - * @return {Object} Returns the instance for chaining. - * @api public - */ - - Cache.prototype.visit = function(method, val) { - visit(this, method, val); - return this; - }; - - return Cache; -} - -/** - * Cast val to an array - */ - -function arrayify(val) { - return val ? (Array.isArray(val) ? val : [val]) : []; -} - -/** - * Expose `Cache` - */ - -module.exports = namespace(); - -/** - * Expose `Cache.namespace` - */ - -module.exports.namespace = namespace; - - -/***/ }), - -/***/ "../../node_modules/cache-base/node_modules/set-value/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * set-value - * - * Copyright (c) 2014-2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var split = __webpack_require__("../../node_modules/split-string/index.js"); -var extend = __webpack_require__("../../node_modules/extend-shallow/index.js"); -var isPlainObject = __webpack_require__("../../node_modules/is-plain-object/index.js"); -var isObject = __webpack_require__("../../node_modules/is-extendable/index.js"); - -module.exports = function(obj, prop, val) { - if (!isObject(obj)) { - return obj; - } - - if (Array.isArray(prop)) { - prop = [].concat.apply([], prop).join('.'); - } - - if (typeof prop !== 'string') { - return obj; - } - - var keys = split(prop, {sep: '.', brackets: true}).filter(isValidKey); - var len = keys.length; - var idx = -1; - var current = obj; - - while (++idx < len) { - var key = keys[idx]; - if (idx !== len - 1) { - if (!isObject(current[key])) { - current[key] = {}; - } - current = current[key]; - continue; - } - - if (isPlainObject(current[key]) && isPlainObject(val)) { - current[key] = extend({}, current[key], val); - } else { - current[key] = val; - } - } - - return obj; -}; - -function isValidKey(key) { - return key !== '__proto__' && key !== 'constructor' && key !== 'prototype'; -} - - -/***/ }), - -/***/ "../../node_modules/call-me-maybe/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var next = (global.process && process.nextTick) || global.setImmediate || function (f) { - setTimeout(f, 0) -} - -module.exports = function maybe (cb, promise) { - if (cb) { - promise - .then(function (result) { - next(function () { cb(null, result) }) - }, function (err) { - next(function () { cb(err) }) - }) - return undefined - } - else { - return promise - } -} - - /***/ }), /***/ "../../node_modules/chalk/source/index.js": @@ -21212,408 +18938,6 @@ module.exports = { }; -/***/ }), - -/***/ "../../node_modules/class-utils/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var util = __webpack_require__("util"); -var utils = __webpack_require__("../../node_modules/class-utils/utils.js"); - -/** - * Expose class utils - */ - -var cu = module.exports; - -/** - * Expose class utils: `cu` - */ - -cu.isObject = function isObject(val) { - return utils.isObj(val) || typeof val === 'function'; -}; - -/** - * Returns true if an array has any of the given elements, or an - * object has any of the give keys. - * - * ```js - * cu.has(['a', 'b', 'c'], 'c'); - * //=> true - * - * cu.has(['a', 'b', 'c'], ['c', 'z']); - * //=> true - * - * cu.has({a: 'b', c: 'd'}, ['c', 'z']); - * //=> true - * ``` - * @param {Object} `obj` - * @param {String|Array} `val` - * @return {Boolean} - * @api public - */ - -cu.has = function has(obj, val) { - val = cu.arrayify(val); - var len = val.length; - - if (cu.isObject(obj)) { - for (var key in obj) { - if (val.indexOf(key) > -1) { - return true; - } - } - - var keys = cu.nativeKeys(obj); - return cu.has(keys, val); - } - - if (Array.isArray(obj)) { - var arr = obj; - while (len--) { - if (arr.indexOf(val[len]) > -1) { - return true; - } - } - return false; - } - - throw new TypeError('expected an array or object.'); -}; - -/** - * Returns true if an array or object has all of the given values. - * - * ```js - * cu.hasAll(['a', 'b', 'c'], 'c'); - * //=> true - * - * cu.hasAll(['a', 'b', 'c'], ['c', 'z']); - * //=> false - * - * cu.hasAll({a: 'b', c: 'd'}, ['c', 'z']); - * //=> false - * ``` - * @param {Object|Array} `val` - * @param {String|Array} `values` - * @return {Boolean} - * @api public - */ - -cu.hasAll = function hasAll(val, values) { - values = cu.arrayify(values); - var len = values.length; - while (len--) { - if (!cu.has(val, values[len])) { - return false; - } - } - return true; -}; - -/** - * Cast the given value to an array. - * - * ```js - * cu.arrayify('foo'); - * //=> ['foo'] - * - * cu.arrayify(['foo']); - * //=> ['foo'] - * ``` - * - * @param {String|Array} `val` - * @return {Array} - * @api public - */ - -cu.arrayify = function arrayify(val) { - return val ? (Array.isArray(val) ? val : [val]) : []; -}; - -/** - * Noop - */ - -cu.noop = function noop() { - return; -}; - -/** - * Returns the first argument passed to the function. - */ - -cu.identity = function identity(val) { - return val; -}; - -/** - * Returns true if a value has a `contructor` - * - * ```js - * cu.hasConstructor({}); - * //=> true - * - * cu.hasConstructor(Object.create(null)); - * //=> false - * ``` - * @param {Object} `value` - * @return {Boolean} - * @api public - */ - -cu.hasConstructor = function hasConstructor(val) { - return cu.isObject(val) && typeof val.constructor !== 'undefined'; -}; - -/** - * Get the native `ownPropertyNames` from the constructor of the - * given `object`. An empty array is returned if the object does - * not have a constructor. - * - * ```js - * cu.nativeKeys({a: 'b', b: 'c', c: 'd'}) - * //=> ['a', 'b', 'c'] - * - * cu.nativeKeys(function(){}) - * //=> ['length', 'caller'] - * ``` - * - * @param {Object} `obj` Object that has a `constructor`. - * @return {Array} Array of keys. - * @api public - */ - -cu.nativeKeys = function nativeKeys(val) { - if (!cu.hasConstructor(val)) return []; - return Object.getOwnPropertyNames(val); -}; - -/** - * Returns property descriptor `key` if it's an "own" property - * of the given object. - * - * ```js - * function App() {} - * Object.defineProperty(App.prototype, 'count', { - * get: function() { - * return Object.keys(this).length; - * } - * }); - * cu.getDescriptor(App.prototype, 'count'); - * // returns: - * // { - * // get: [Function], - * // set: undefined, - * // enumerable: false, - * // configurable: false - * // } - * ``` - * - * @param {Object} `obj` - * @param {String} `key` - * @return {Object} Returns descriptor `key` - * @api public - */ - -cu.getDescriptor = function getDescriptor(obj, key) { - if (!cu.isObject(obj)) { - throw new TypeError('expected an object.'); - } - if (typeof key !== 'string') { - throw new TypeError('expected key to be a string.'); - } - return Object.getOwnPropertyDescriptor(obj, key); -}; - -/** - * Copy a descriptor from one object to another. - * - * ```js - * function App() {} - * Object.defineProperty(App.prototype, 'count', { - * get: function() { - * return Object.keys(this).length; - * } - * }); - * var obj = {}; - * cu.copyDescriptor(obj, App.prototype, 'count'); - * ``` - * @param {Object} `receiver` - * @param {Object} `provider` - * @param {String} `name` - * @return {Object} - * @api public - */ - -cu.copyDescriptor = function copyDescriptor(receiver, provider, name) { - if (!cu.isObject(receiver)) { - throw new TypeError('expected receiving object to be an object.'); - } - if (!cu.isObject(provider)) { - throw new TypeError('expected providing object to be an object.'); - } - if (typeof name !== 'string') { - throw new TypeError('expected name to be a string.'); - } - - var val = cu.getDescriptor(provider, name); - if (val) Object.defineProperty(receiver, name, val); -}; - -/** - * Copy static properties, prototype properties, and descriptors - * from one object to another. - * - * @param {Object} `receiver` - * @param {Object} `provider` - * @param {String|Array} `omit` One or more properties to omit - * @return {Object} - * @api public - */ - -cu.copy = function copy(receiver, provider, omit) { - if (!cu.isObject(receiver)) { - throw new TypeError('expected receiving object to be an object.'); - } - if (!cu.isObject(provider)) { - throw new TypeError('expected providing object to be an object.'); - } - var props = Object.getOwnPropertyNames(provider); - var keys = Object.keys(provider); - var len = props.length, - key; - omit = cu.arrayify(omit); - - while (len--) { - key = props[len]; - - if (cu.has(keys, key)) { - utils.define(receiver, key, provider[key]); - } else if (!(key in receiver) && !cu.has(omit, key)) { - cu.copyDescriptor(receiver, provider, key); - } - } -}; - -/** - * Inherit the static properties, prototype properties, and descriptors - * from of an object. - * - * @param {Object} `receiver` - * @param {Object} `provider` - * @param {String|Array} `omit` One or more properties to omit - * @return {Object} - * @api public - */ - -cu.inherit = function inherit(receiver, provider, omit) { - if (!cu.isObject(receiver)) { - throw new TypeError('expected receiving object to be an object.'); - } - if (!cu.isObject(provider)) { - throw new TypeError('expected providing object to be an object.'); - } - - var keys = []; - for (var key in provider) { - keys.push(key); - receiver[key] = provider[key]; - } - - keys = keys.concat(cu.arrayify(omit)); - - var a = provider.prototype || provider; - var b = receiver.prototype || receiver; - cu.copy(b, a, keys); -}; - -/** - * Returns a function for extending the static properties, - * prototype properties, and descriptors from the `Parent` - * constructor onto `Child` constructors. - * - * ```js - * var extend = cu.extend(Parent); - * Parent.extend(Child); - * - * // optional methods - * Parent.extend(Child, { - * foo: function() {}, - * bar: function() {} - * }); - * ``` - * @param {Function} `Parent` Parent ctor - * @param {Function} `extend` Optional extend function to handle custom extensions. Useful when updating methods that require a specific prototype. - * @param {Function} `Child` Child ctor - * @param {Object} `proto` Optionally pass additional prototype properties to inherit. - * @return {Object} - * @api public - */ - -cu.extend = function() { - // keep it lazy, instead of assigning to `cu.extend` - return utils.staticExtend.apply(null, arguments); -}; - -/** - * Bubble up events emitted from static methods on the Parent ctor. - * - * @param {Object} `Parent` - * @param {Array} `events` Event names to bubble up - * @api public - */ - -cu.bubble = function(Parent, events) { - events = events || []; - Parent.bubble = function(Child, arr) { - if (Array.isArray(arr)) { - events = utils.union([], events, arr); - } - var len = events.length; - var idx = -1; - while (++idx < len) { - var name = events[idx]; - Parent.on(name, Child.emit.bind(Child, name)); - } - cu.bubble(Child, events); - }; -}; - - -/***/ }), - -/***/ "../../node_modules/class-utils/utils.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var utils = {}; - - - -/** - * Lazily required module dependencies - */ - -utils.union = __webpack_require__("../../node_modules/arr-union/index.js"); -utils.define = __webpack_require__("../../node_modules/define-property/index.js"); -utils.isObj = __webpack_require__("../../node_modules/isobject/index.js"); -utils.staticExtend = __webpack_require__("../../node_modules/static-extend/index.js"); - - -/** - * Expose `utils` - */ - -module.exports = utils; - - /***/ }), /***/ "../../node_modules/clean-stack/index.js": @@ -22329,44 +19653,6 @@ mkdirP.sync = function sync (p, opts, made) { }; -/***/ }), - -/***/ "../../node_modules/collection-visit/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * collection-visit - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var visit = __webpack_require__("../../node_modules/object-visit/index.js"); -var mapVisit = __webpack_require__("../../node_modules/map-visit/index.js"); - -module.exports = function(collection, method, val) { - var result; - - if (typeof val === 'string' && (method in collection)) { - var args = [].slice.call(arguments, 2); - result = collection[method].apply(collection, args); - } else if (Array.isArray(val)) { - result = mapVisit.apply(null, arguments); - } else { - result = visit.apply(null, arguments); - } - - if (typeof result !== 'undefined') { - return result; - } - - return collection; -}; - - /***/ }), /***/ "../../node_modules/color-convert/conversions.js": @@ -23751,176 +21037,6 @@ module.exports = { }; -/***/ }), - -/***/ "../../node_modules/component-emitter/index.js": -/***/ (function(module, exports, __webpack_require__) { - - -/** - * Expose `Emitter`. - */ - -if (true) { - module.exports = Emitter; -} - -/** - * Initialize a new `Emitter`. - * - * @api public - */ - -function Emitter(obj) { - if (obj) return mixin(obj); -}; - -/** - * Mixin the emitter properties. - * - * @param {Object} obj - * @return {Object} - * @api private - */ - -function mixin(obj) { - for (var key in Emitter.prototype) { - obj[key] = Emitter.prototype[key]; - } - return obj; -} - -/** - * Listen on the given `event` with `fn`. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.on = -Emitter.prototype.addEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - (this._callbacks['$' + event] = this._callbacks['$' + event] || []) - .push(fn); - return this; -}; - -/** - * Adds an `event` listener that will be invoked a single - * time then automatically removed. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.once = function(event, fn){ - function on() { - this.off(event, on); - fn.apply(this, arguments); - } - - on.fn = fn; - this.on(event, on); - return this; -}; - -/** - * Remove the given callback for `event` or all - * registered callbacks. - * - * @param {String} event - * @param {Function} fn - * @return {Emitter} - * @api public - */ - -Emitter.prototype.off = -Emitter.prototype.removeListener = -Emitter.prototype.removeAllListeners = -Emitter.prototype.removeEventListener = function(event, fn){ - this._callbacks = this._callbacks || {}; - - // all - if (0 == arguments.length) { - this._callbacks = {}; - return this; - } - - // specific event - var callbacks = this._callbacks['$' + event]; - if (!callbacks) return this; - - // remove all handlers - if (1 == arguments.length) { - delete this._callbacks['$' + event]; - return this; - } - - // remove specific handler - var cb; - for (var i = 0; i < callbacks.length; i++) { - cb = callbacks[i]; - if (cb === fn || cb.fn === fn) { - callbacks.splice(i, 1); - break; - } - } - return this; -}; - -/** - * Emit `event` with the given args. - * - * @param {String} event - * @param {Mixed} ... - * @return {Emitter} - */ - -Emitter.prototype.emit = function(event){ - this._callbacks = this._callbacks || {}; - var args = [].slice.call(arguments, 1) - , callbacks = this._callbacks['$' + event]; - - if (callbacks) { - callbacks = callbacks.slice(0); - for (var i = 0, len = callbacks.length; i < len; ++i) { - callbacks[i].apply(this, args); - } - } - - return this; -}; - -/** - * Return array of callbacks for `event`. - * - * @param {String} event - * @return {Array} - * @api public - */ - -Emitter.prototype.listeners = function(event){ - this._callbacks = this._callbacks || {}; - return this._callbacks['$' + event] || []; -}; - -/** - * Check if this emitter has `event` handlers. - * - * @param {String} event - * @return {Boolean} - * @api public - */ - -Emitter.prototype.hasListeners = function(event){ - return !! this.listeners(event).length; -}; - - /***/ }), /***/ "../../node_modules/concat-map/index.js": @@ -23943,59302 +21059,35519 @@ var isArray = Array.isArray || function (xs) { /***/ }), -/***/ "../../node_modules/copy-descriptor/index.js": +/***/ "../../node_modules/cross-spawn/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -/*! - * copy-descriptor - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -/** - * Copy a descriptor from one object to another. - * - * ```js - * function App() { - * this.cache = {}; - * } - * App.prototype.set = function(key, val) { - * this.cache[key] = val; - * return this; - * }; - * Object.defineProperty(App.prototype, 'count', { - * get: function() { - * return Object.keys(this.cache).length; - * } - * }); - * - * copy(App.prototype, 'count', 'len'); - * - * // create an instance - * var app = new App(); - * - * app.set('a', true); - * app.set('b', true); - * app.set('c', true); - * - * console.log(app.count); - * //=> 3 - * console.log(app.len); - * //=> 3 - * ``` - * @name copy - * @param {Object} `receiver` The target object - * @param {Object} `provider` The provider object - * @param {String} `from` The key to copy on provider. - * @param {String} `to` Optionally specify a new key name to use. - * @return {Object} - * @api public - */ - -module.exports = function copyDescriptor(receiver, provider, from, to) { - if (!isObject(provider) && typeof provider !== 'function') { - to = from; - from = provider; - provider = receiver; - } - if (!isObject(receiver) && typeof receiver !== 'function') { - throw new TypeError('expected the first argument to be an object'); - } - if (!isObject(provider) && typeof provider !== 'function') { - throw new TypeError('expected provider to be an object'); - } +const cp = __webpack_require__("child_process"); +const parse = __webpack_require__("../../node_modules/cross-spawn/lib/parse.js"); +const enoent = __webpack_require__("../../node_modules/cross-spawn/lib/enoent.js"); - if (typeof to !== 'string') { - to = from; - } - if (typeof from !== 'string') { - throw new TypeError('expected key to be a string'); - } +function spawn(command, args, options) { + // Parse the arguments + const parsed = parse(command, args, options); - if (!(from in provider)) { - throw new Error('property "' + from + '" does not exist'); - } + // Spawn the child process + const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); - var val = Object.getOwnPropertyDescriptor(provider, from); - if (val) Object.defineProperty(receiver, to, val); -}; + // Hook into child process "exit" event to emit an error if the command + // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 + enoent.hookChildProcess(spawned, parsed); -function isObject(val) { - return {}.toString.call(val) === '[object Object]'; + return spawned; } +function spawnSync(command, args, options) { + // Parse the arguments + const parsed = parse(command, args, options); + // Spawn the child process + const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); -/***/ }), - -/***/ "../../node_modules/cp-file/cp-file-error.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const NestedError = __webpack_require__("../../node_modules/nested-error-stacks/index.js"); + // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 + result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); -class CpFileError extends NestedError { - constructor(message, nested) { - super(message, nested); - Object.assign(this, nested); - this.name = 'CpFileError'; - } + return result; } -module.exports = CpFileError; +module.exports = spawn; +module.exports.spawn = spawn; +module.exports.sync = spawnSync; + +module.exports._parse = parse; +module.exports._enoent = enoent; /***/ }), -/***/ "../../node_modules/cp-file/fs.js": +/***/ "../../node_modules/cross-spawn/lib/enoent.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__("util"); -const fs = __webpack_require__("../../node_modules/graceful-fs/graceful-fs.js"); -const makeDir = __webpack_require__("../../node_modules/make-dir/index.js"); -const pEvent = __webpack_require__("../../node_modules/p-event/index.js"); -const CpFileError = __webpack_require__("../../node_modules/cp-file/cp-file-error.js"); - -const stat = promisify(fs.stat); -const lstat = promisify(fs.lstat); -const utimes = promisify(fs.utimes); -const chmod = promisify(fs.chmod); -const chown = promisify(fs.chown); - -exports.closeSync = fs.closeSync.bind(fs); -exports.createWriteStream = fs.createWriteStream.bind(fs); - -exports.createReadStream = async (path, options) => { - const read = fs.createReadStream(path, options); - - try { - await pEvent(read, ['readable', 'end']); - } catch (error) { - throw new CpFileError(`Cannot read from \`${path}\`: ${error.message}`, error); - } - - return read; -}; -exports.stat = path => stat(path).catch(error => { - throw new CpFileError(`Cannot stat path \`${path}\`: ${error.message}`, error); -}); +const isWin = process.platform === 'win32'; -exports.lstat = path => lstat(path).catch(error => { - throw new CpFileError(`lstat \`${path}\` failed: ${error.message}`, error); -}); +function notFoundError(original, syscall) { + return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { + code: 'ENOENT', + errno: 'ENOENT', + syscall: `${syscall} ${original.command}`, + path: original.command, + spawnargs: original.args, + }); +} -exports.utimes = (path, atime, mtime) => utimes(path, atime, mtime).catch(error => { - throw new CpFileError(`utimes \`${path}\` failed: ${error.message}`, error); -}); +function hookChildProcess(cp, parsed) { + if (!isWin) { + return; + } -exports.chmod = (path, mode) => chmod(path, mode).catch(error => { - throw new CpFileError(`chmod \`${path}\` failed: ${error.message}`, error); -}); + const originalEmit = cp.emit; -exports.chown = (path, uid, gid) => chown(path, uid, gid).catch(error => { - throw new CpFileError(`chown \`${path}\` failed: ${error.message}`, error); -}); + cp.emit = function (name, arg1) { + // If emitting "exit" event and exit code is 1, we need to check if + // the command exists and emit an "error" instead + // See https://github.com/IndigoUnited/node-cross-spawn/issues/16 + if (name === 'exit') { + const err = verifyENOENT(arg1, parsed, 'spawn'); -exports.statSync = path => { - try { - return fs.statSync(path); - } catch (error) { - throw new CpFileError(`stat \`${path}\` failed: ${error.message}`, error); - } -}; + if (err) { + return originalEmit.call(cp, 'error', err); + } + } -exports.utimesSync = (path, atime, mtime) => { - try { - return fs.utimesSync(path, atime, mtime); - } catch (error) { - throw new CpFileError(`utimes \`${path}\` failed: ${error.message}`, error); - } -}; + return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params + }; +} -exports.chmodSync = (path, mode) => { - try { - return fs.chmodSync(path, mode); - } catch (error) { - throw new CpFileError(`chmod \`${path}\` failed: ${error.message}`, error); - } -}; +function verifyENOENT(status, parsed) { + if (isWin && status === 1 && !parsed.file) { + return notFoundError(parsed.original, 'spawn'); + } -exports.chownSync = (path, uid, gid) => { - try { - return fs.chownSync(path, uid, gid); - } catch (error) { - throw new CpFileError(`chown \`${path}\` failed: ${error.message}`, error); - } -}; + return null; +} -exports.makeDir = path => makeDir(path, {fs}).catch(error => { - throw new CpFileError(`Cannot create directory \`${path}\`: ${error.message}`, error); -}); +function verifyENOENTSync(status, parsed) { + if (isWin && status === 1 && !parsed.file) { + return notFoundError(parsed.original, 'spawnSync'); + } -exports.makeDirSync = path => { - try { - makeDir.sync(path, {fs}); - } catch (error) { - throw new CpFileError(`Cannot create directory \`${path}\`: ${error.message}`, error); - } -}; + return null; +} -exports.copyFileSync = (source, destination, flags) => { - try { - fs.copyFileSync(source, destination, flags); - } catch (error) { - throw new CpFileError(`Cannot copy from \`${source}\` to \`${destination}\`: ${error.message}`, error); - } +module.exports = { + hookChildProcess, + verifyENOENT, + verifyENOENTSync, + notFoundError, }; /***/ }), -/***/ "../../node_modules/cp-file/index.js": +/***/ "../../node_modules/cross-spawn/lib/parse.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; + const path = __webpack_require__("path"); -const {constants: fsConstants} = __webpack_require__("fs"); -const pEvent = __webpack_require__("../../node_modules/p-event/index.js"); -const CpFileError = __webpack_require__("../../node_modules/cp-file/cp-file-error.js"); -const fs = __webpack_require__("../../node_modules/cp-file/fs.js"); -const ProgressEmitter = __webpack_require__("../../node_modules/cp-file/progress-emitter.js"); - -const cpFileAsync = async (source, destination, options, progressEmitter) => { - let readError; - const stat = await fs.stat(source); - progressEmitter.size = stat.size; - - const read = await fs.createReadStream(source); - await fs.makeDir(path.dirname(destination)); - const write = fs.createWriteStream(destination, {flags: options.overwrite ? 'w' : 'wx'}); - read.on('data', () => { - progressEmitter.written = write.bytesWritten; - }); - read.once('error', error => { - readError = new CpFileError(`Cannot read from \`${source}\`: ${error.message}`, error); - write.end(); - }); +const resolveCommand = __webpack_require__("../../node_modules/cross-spawn/lib/util/resolveCommand.js"); +const escape = __webpack_require__("../../node_modules/cross-spawn/lib/util/escape.js"); +const readShebang = __webpack_require__("../../node_modules/cross-spawn/lib/util/readShebang.js"); - let updateStats = false; - try { - const writePromise = pEvent(write, 'close'); - read.pipe(write); - await writePromise; - progressEmitter.written = progressEmitter.size; - updateStats = true; - } catch (error) { - if (options.overwrite || error.code !== 'EEXIST') { - throw new CpFileError(`Cannot write to \`${destination}\`: ${error.message}`, error); - } - } +const isWin = process.platform === 'win32'; +const isExecutableRegExp = /\.(?:com|exe)$/i; +const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; - if (readError) { - throw readError; - } +function detectShebang(parsed) { + parsed.file = resolveCommand(parsed); - if (updateStats) { - const stats = await fs.lstat(source); + const shebang = parsed.file && readShebang(parsed.file); - return Promise.all([ - fs.utimes(destination, stats.atime, stats.mtime), - fs.chmod(destination, stats.mode), - fs.chown(destination, stats.uid, stats.gid) - ]); - } -}; + if (shebang) { + parsed.args.unshift(parsed.file); + parsed.command = shebang; -const cpFile = (source, destination, options) => { - if (!source || !destination) { - return Promise.reject(new CpFileError('`source` and `destination` required')); - } + return resolveCommand(parsed); + } - options = { - overwrite: true, - ...options - }; + return parsed.file; +} - const progressEmitter = new ProgressEmitter(path.resolve(source), path.resolve(destination)); - const promise = cpFileAsync(source, destination, options, progressEmitter); - promise.on = (...args) => { - progressEmitter.on(...args); - return promise; - }; +function parseNonShell(parsed) { + if (!isWin) { + return parsed; + } - return promise; -}; + // Detect & add support for shebangs + const commandFile = detectShebang(parsed); -module.exports = cpFile; + // We don't need a shell if the command filename is an executable + const needsShell = !isExecutableRegExp.test(commandFile); -const checkSourceIsFile = (stat, source) => { - if (stat.isDirectory()) { - throw Object.assign(new CpFileError(`EISDIR: illegal operation on a directory '${source}'`), { - errno: -21, - code: 'EISDIR', - source - }); - } -}; + // If a shell is required, use cmd.exe and take care of escaping everything correctly + // Note that `forceShell` is an hidden option used only in tests + if (parsed.options.forceShell || needsShell) { + // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/` + // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument + // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called, + // we need to double escape them + const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); -const fixupAttributes = (destination, stat) => { - fs.chmodSync(destination, stat.mode); - fs.chownSync(destination, stat.uid, stat.gid); -}; + // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar) + // This is necessary otherwise it will always fail with ENOENT in those cases + parsed.command = path.normalize(parsed.command); -module.exports.sync = (source, destination, options) => { - if (!source || !destination) { - throw new CpFileError('`source` and `destination` required'); - } + // Escape command & arguments + parsed.command = escape.command(parsed.command); + parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars)); - options = { - overwrite: true, - ...options - }; + const shellCommand = [parsed.command].concat(parsed.args).join(' '); - const stat = fs.statSync(source); - checkSourceIsFile(stat, source); - fs.makeDirSync(path.dirname(destination)); + parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`]; + parsed.command = process.env.comspec || 'cmd.exe'; + parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped + } - const flags = options.overwrite ? null : fsConstants.COPYFILE_EXCL; - try { - fs.copyFileSync(source, destination, flags); - } catch (error) { - if (!options.overwrite && error.code === 'EEXIST') { - return; - } + return parsed; +} - throw error; - } +function parse(command, args, options) { + // Normalize arguments, similar to nodejs + if (args && !Array.isArray(args)) { + options = args; + args = null; + } - fs.utimesSync(destination, stat.atime, stat.mtime); - fixupAttributes(destination, stat); -}; + args = args ? args.slice(0) : []; // Clone array to avoid changing the original + options = Object.assign({}, options); // Clone object to avoid changing the original + + // Build our parsed object + const parsed = { + command, + args, + options, + file: undefined, + original: { + command, + args, + }, + }; + + // Delegate further parsing to shell or non-shell + return options.shell ? parsed : parseNonShell(parsed); +} + +module.exports = parse; /***/ }), -/***/ "../../node_modules/cp-file/progress-emitter.js": +/***/ "../../node_modules/cross-spawn/lib/util/escape.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const EventEmitter = __webpack_require__("events"); -const written = new WeakMap(); +// See http://www.robvanderwoude.com/escapechars.php +const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; -class ProgressEmitter extends EventEmitter { - constructor(source, destination) { - super(); - this._source = source; - this._destination = destination; - } +function escapeCommand(arg) { + // Escape meta chars + arg = arg.replace(metaCharsRegExp, '^$1'); - set written(value) { - written.set(this, value); - this.emitProgress(); - } + return arg; +} - get written() { - return written.get(this); - } +function escapeArgument(arg, doubleEscapeMetaChars) { + // Convert to string + arg = `${arg}`; - emitProgress() { - const {size, written} = this; - this.emit('progress', { - src: this._source, - dest: this._destination, - size, - written, - percent: written === size ? 1 : written / size - }); - } -} + // Algorithm below is based on https://qntm.org/cmd -module.exports = ProgressEmitter; + // Sequence of backslashes followed by a double quote: + // double up all the backslashes and escape the double quote + arg = arg.replace(/(\\*)"/g, '$1$1\\"'); + // Sequence of backslashes followed by the end of the string + // (which will become a double quote later): + // double up all the backslashes + arg = arg.replace(/(\\*)$/, '$1$1'); -/***/ }), + // All other backslashes occur literally -/***/ "../../node_modules/cpy/cpy-error.js": -/***/ (function(module, exports, __webpack_require__) { + // Quote the whole thing: + arg = `"${arg}"`; -"use strict"; + // Escape meta chars + arg = arg.replace(metaCharsRegExp, '^$1'); -const NestedError = __webpack_require__("../../node_modules/nested-error-stacks/index.js"); + // Double escape meta chars if necessary + if (doubleEscapeMetaChars) { + arg = arg.replace(metaCharsRegExp, '^$1'); + } -class CpyError extends NestedError { - constructor(message, nested) { - super(message, nested); - Object.assign(this, nested); - this.name = 'CpyError'; - } + return arg; } -module.exports = CpyError; +module.exports.command = escapeCommand; +module.exports.argument = escapeArgument; /***/ }), -/***/ "../../node_modules/cpy/index.js": +/***/ "../../node_modules/cross-spawn/lib/util/readShebang.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const EventEmitter = __webpack_require__("events"); -const path = __webpack_require__("path"); -const os = __webpack_require__("os"); -const pMap = __webpack_require__("../../node_modules/cpy/node_modules/p-map/index.js"); -const arrify = __webpack_require__("../../node_modules/arrify/index.js"); -const globby = __webpack_require__("../../node_modules/cpy/node_modules/globby/index.js"); -const hasGlob = __webpack_require__("../../node_modules/has-glob/index.js"); -const cpFile = __webpack_require__("../../node_modules/cp-file/index.js"); -const junk = __webpack_require__("../../node_modules/junk/index.js"); -const pFilter = __webpack_require__("../../node_modules/p-filter/index.js"); -const CpyError = __webpack_require__("../../node_modules/cpy/cpy-error.js"); - -const defaultOptions = { - ignoreJunk: true -}; - -class SourceFile { - constructor(relativePath, path) { - this.path = path; - this.relativePath = relativePath; - Object.freeze(this); - } - - get name() { - return path.basename(this.relativePath); - } - get nameWithoutExtension() { - return path.basename(this.relativePath, path.extname(this.relativePath)); - } +const fs = __webpack_require__("fs"); +const shebangCommand = __webpack_require__("../../node_modules/shebang-command/index.js"); - get extension() { - return path.extname(this.relativePath).slice(1); - } -} +function readShebang(command) { + // Read the first 150 bytes from the file + const size = 150; + const buffer = Buffer.alloc(size); -const preprocessSourcePath = (source, options) => path.resolve(options.cwd ? options.cwd : process.cwd(), source); + let fd; -const preprocessDestinationPath = (source, destination, options) => { - let basename = path.basename(source); + try { + fd = fs.openSync(command, 'r'); + fs.readSync(fd, buffer, 0, size, 0); + fs.closeSync(fd); + } catch (e) { /* Empty */ } - if (typeof options.rename === 'string') { - basename = options.rename; - } else if (typeof options.rename === 'function') { - basename = options.rename(basename); - } + // Attempt to extract shebang (null is returned if not a shebang) + return shebangCommand(buffer.toString()); +} - if (options.cwd) { - destination = path.resolve(options.cwd, destination); - } +module.exports = readShebang; - if (options.parents) { - const dirname = path.dirname(source); - const parsedDirectory = path.parse(dirname); - return path.join(destination, dirname.replace(parsedDirectory.root, path.sep), basename); - } - return path.join(destination, basename); -}; +/***/ }), -module.exports = (source, destination, { - concurrency = (os.cpus().length || 1) * 2, - ...options -} = {}) => { - const progressEmitter = new EventEmitter(); +/***/ "../../node_modules/cross-spawn/lib/util/resolveCommand.js": +/***/ (function(module, exports, __webpack_require__) { - options = { - ...defaultOptions, - ...options - }; +"use strict"; - const promise = (async () => { - source = arrify(source); - if (source.length === 0 || !destination) { - throw new CpyError('`source` and `destination` required'); - } +const path = __webpack_require__("path"); +const which = __webpack_require__("../../node_modules/which/which.js"); +const getPathKey = __webpack_require__("../../node_modules/cross-spawn/node_modules/path-key/index.js"); - const copyStatus = new Map(); - let completedFiles = 0; - let completedSize = 0; +function resolveCommandAttempt(parsed, withoutPathExt) { + const env = parsed.options.env || process.env; + const cwd = process.cwd(); + const hasCustomCwd = parsed.options.cwd != null; + // Worker threads do not have process.chdir() + const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled; - let files; - try { - files = await globby(source, options); + // If a custom `cwd` was specified, we need to change the process cwd + // because `which` will do stat calls but does not support a custom cwd + if (shouldSwitchCwd) { + try { + process.chdir(parsed.options.cwd); + } catch (err) { + /* Empty */ + } + } - if (options.ignoreJunk) { - files = files.filter(file => junk.not(path.basename(file))); - } - } catch (error) { - throw new CpyError(`Cannot glob \`${source}\`: ${error.message}`, error); - } + let resolved; - if (files.length === 0 && !hasGlob(source)) { - throw new CpyError(`Cannot copy \`${source}\`: the file doesn't exist`); - } + try { + resolved = which.sync(parsed.command, { + path: env[getPathKey({ env })], + pathExt: withoutPathExt ? path.delimiter : undefined, + }); + } catch (e) { + /* Empty */ + } finally { + if (shouldSwitchCwd) { + process.chdir(cwd); + } + } - let sources = files.map(sourcePath => new SourceFile(sourcePath, preprocessSourcePath(sourcePath, options))); + // If we successfully resolved, ensure that an absolute path is returned + // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it + if (resolved) { + resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved); + } - if (options.filter !== undefined) { - const filteredSources = await pFilter(sources, options.filter, {concurrency: 1024}); - sources = filteredSources; - } + return resolved; +} - if (sources.length === 0) { - progressEmitter.emit('progress', { - totalFiles: 0, - percent: 1, - completedFiles: 0, - completedSize: 0 - }); - } +function resolveCommand(parsed) { + return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); +} - const fileProgressHandler = event => { - const fileStatus = copyStatus.get(event.src) || {written: 0, percent: 0}; +module.exports = resolveCommand; - if (fileStatus.written !== event.written || fileStatus.percent !== event.percent) { - completedSize -= fileStatus.written; - completedSize += event.written; - if (event.percent === 1 && fileStatus.percent !== 1) { - completedFiles++; - } +/***/ }), - copyStatus.set(event.src, { - written: event.written, - percent: event.percent - }); - - progressEmitter.emit('progress', { - totalFiles: files.length, - percent: completedFiles / files.length, - completedFiles, - completedSize - }); - } - }; +/***/ "../../node_modules/cross-spawn/node_modules/path-key/index.js": +/***/ (function(module, exports, __webpack_require__) { - return pMap(sources, async source => { - const to = preprocessDestinationPath(source.relativePath, destination, options); +"use strict"; - try { - await cpFile(source.path, to, options).on('progress', fileProgressHandler); - } catch (error) { - throw new CpyError(`Cannot copy from \`${source.relativePath}\` to \`${to}\`: ${error.message}`, error); - } - return to; - }, {concurrency}); - })(); +const pathKey = (options = {}) => { + const environment = options.env || process.env; + const platform = options.platform || process.platform; - promise.on = (...arguments_) => { - progressEmitter.on(...arguments_); - return promise; - }; + if (platform !== 'win32') { + return 'PATH'; + } - return promise; + return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path'; }; +module.exports = pathKey; +// TODO: Remove this for the next major release +module.exports.default = pathKey; -/***/ }), - -/***/ "../../node_modules/cpy/node_modules/aggregate-error/index.js": -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +/***/ }), -const indentString = __webpack_require__("../../node_modules/cpy/node_modules/indent-string/index.js"); -const cleanStack = __webpack_require__("../../node_modules/clean-stack/index.js"); +/***/ "../../node_modules/debug/node_modules/ms/index.js": +/***/ (function(module, exports) { -const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); +/** + * Helpers. + */ -class AggregateError extends Error { - constructor(errors) { - if (!Array.isArray(errors)) { - throw new TypeError(`Expected input to be an Array, got ${typeof errors}`); - } +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var y = d * 365.25; - errors = [...errors].map(error => { - if (error instanceof Error) { - return error; - } - - if (error !== null && typeof error === 'object') { - // Handle plain error objects with message property and/or possibly other metadata - return Object.assign(new Error(error.message), error); - } - - return new Error(error); - }); - - let message = errors - .map(error => { - // The `stack` property is not standardized, so we can't assume it exists - return typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error); - }) - .join('\n'); - message = '\n' + indentString(message, 4); - super(message); +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ - this.name = 'AggregateError'; +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isNaN(val) === false) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; - Object.defineProperty(this, '_errors', {value: errors}); - } +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ - * [Symbol.iterator]() { - for (const error of this._errors) { - yield error; - } - } +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } } -module.exports = AggregateError; - +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ -/***/ }), +function fmtShort(ms) { + if (ms >= d) { + return Math.round(ms / d) + 'd'; + } + if (ms >= h) { + return Math.round(ms / h) + 'h'; + } + if (ms >= m) { + return Math.round(ms / m) + 'm'; + } + if (ms >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} -/***/ "../../node_modules/cpy/node_modules/array-union/index.js": -/***/ (function(module, exports, __webpack_require__) { +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ -"use strict"; +function fmtLong(ms) { + return plural(ms, d, 'day') || + plural(ms, h, 'hour') || + plural(ms, m, 'minute') || + plural(ms, s, 'second') || + ms + ' ms'; +} -var arrayUniq = __webpack_require__("../../node_modules/array-uniq/index.js"); +/** + * Pluralization helper. + */ -module.exports = function () { - return arrayUniq([].concat.apply([], arguments)); -}; +function plural(ms, n, name) { + if (ms < n) { + return; + } + if (ms < n * 1.5) { + return Math.floor(ms / n) + ' ' + name; + } + return Math.ceil(ms / n) + ' ' + name + 's'; +} /***/ }), -/***/ "../../node_modules/cpy/node_modules/dir-glob/index.js": +/***/ "../../node_modules/debug/src/browser.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; - -const path = __webpack_require__("path"); -const pathType = __webpack_require__("../../node_modules/cpy/node_modules/path-type/index.js"); - -const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; - -const getPath = (filepath, cwd) => { - const pth = filepath[0] === '!' ? filepath.slice(1) : filepath; - return path.isAbsolute(pth) ? pth : path.join(cwd, pth); -}; +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ -const addExtensions = (file, extensions) => { - if (path.extname(file)) { - return `**/${file}`; - } +exports = module.exports = __webpack_require__("../../node_modules/debug/src/debug.js"); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); - return `**/${file}.${getExtensions(extensions)}`; -}; +/** + * Colors. + */ -const getGlob = (dir, opts) => { - if (opts.files && !Array.isArray(opts.files)) { - throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof opts.files}\``); - } +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; - if (opts.extensions && !Array.isArray(opts.extensions)) { - throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof opts.extensions}\``); - } +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ - if (opts.files && opts.extensions) { - return opts.files.map(x => path.join(dir, addExtensions(x, opts.extensions))); - } +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } - if (opts.files) { - return opts.files.map(x => path.join(dir, `**/${x}`)); - } + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} - if (opts.extensions) { - return [path.join(dir, `**/*.${getExtensions(opts.extensions)}`)]; - } +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ - return [path.join(dir, '**')]; +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } }; -module.exports = (input, opts) => { - opts = Object.assign({cwd: process.cwd()}, opts); - if (typeof opts.cwd !== 'string') { - return Promise.reject(new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof opts.cwd}\``)); - } +/** + * Colorize log arguments if enabled. + * + * @api public + */ - return Promise.all([].concat(input).map(x => pathType.dir(getPath(x, opts.cwd)) - .then(isDir => isDir ? getGlob(x, opts) : x))) - .then(globs => [].concat.apply([], globs)); -}; +function formatArgs(args) { + var useColors = this.useColors; -module.exports.sync = (input, opts) => { - opts = Object.assign({cwd: process.cwd()}, opts); + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); - if (typeof opts.cwd !== 'string') { - throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof opts.cwd}\``); - } + if (!useColors) return; - const globs = [].concat(input).map(x => pathType.dirSync(getPath(x, opts.cwd)) ? getGlob(x, opts) : x); - return [].concat.apply([], globs); -}; + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); -/***/ }), + args.splice(lastC, 0, c); +} -/***/ "../../node_modules/cpy/node_modules/globby/gitignore.js": -/***/ (function(module, exports, __webpack_require__) { +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ -"use strict"; +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} -const fs = __webpack_require__("fs"); -const path = __webpack_require__("path"); -const fastGlob = __webpack_require__("../../node_modules/fast-glob/index.js"); -const gitIgnore = __webpack_require__("../../node_modules/cpy/node_modules/ignore/index.js"); -const pify = __webpack_require__("../../node_modules/pify/index.js"); -const slash = __webpack_require__("../../node_modules/cpy/node_modules/slash/index.js"); +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ -const DEFAULT_IGNORE = [ - '**/node_modules/**', - '**/bower_components/**', - '**/flow-typed/**', - '**/coverage/**', - '**/.git' -]; +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} -const readFileP = pify(fs.readFile); +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ -const mapGitIgnorePatternTo = base => ignore => { - if (ignore.startsWith('!')) { - return '!' + path.posix.join(base, ignore.slice(1)); - } +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} - return path.posix.join(base, ignore); -}; + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } -const parseGitIgnore = (content, options) => { - const base = slash(path.relative(options.cwd, path.dirname(options.fileName))); + return r; +} - return content - .split(/\r?\n/) - .filter(Boolean) - .filter(line => line.charAt(0) !== '#') - .map(mapGitIgnorePatternTo(base)); -}; +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ -const reduceIgnore = files => { - return files.reduce((ignores, file) => { - ignores.add(parseGitIgnore(file.content, { - cwd: file.cwd, - fileName: file.filePath - })); - return ignores; - }, gitIgnore()); -}; +exports.enable(load()); -const getIsIgnoredPredecate = (ignores, cwd) => { - return p => ignores.ignores(slash(path.relative(cwd, p))); -}; +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ -const getFile = (file, cwd) => { - const filePath = path.join(cwd, file); - return readFileP(filePath, 'utf8') - .then(content => ({ - content, - cwd, - filePath - })); -}; +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} -const getFileSync = (file, cwd) => { - const filePath = path.join(cwd, file); - const content = fs.readFileSync(filePath, 'utf8'); - return { - content, - cwd, - filePath - }; -}; +/***/ }), -const normalizeOptions = (options = {}) => { - const ignore = options.ignore || []; - const cwd = options.cwd || process.cwd(); - return {ignore, cwd}; -}; +/***/ "../../node_modules/debug/src/debug.js": +/***/ (function(module, exports, __webpack_require__) { -module.exports = options => { - options = normalizeOptions(options); - return fastGlob('**/.gitignore', { - ignore: DEFAULT_IGNORE.concat(options.ignore), - cwd: options.cwd - }) - .then(paths => Promise.all(paths.map(file => getFile(file, options.cwd)))) - .then(files => reduceIgnore(files)) - .then(ignores => getIsIgnoredPredecate(ignores, options.cwd)); -}; +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ -module.exports.sync = options => { - options = normalizeOptions(options); +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = __webpack_require__("../../node_modules/debug/node_modules/ms/index.js"); - const paths = fastGlob.sync('**/.gitignore', { - ignore: DEFAULT_IGNORE.concat(options.ignore), - cwd: options.cwd - }); - const files = paths.map(file => getFileSync(file, options.cwd)); - const ignores = reduceIgnore(files); +/** + * The currently active debug mode names, and names to skip. + */ - return getIsIgnoredPredecate(ignores, options.cwd); -}; +exports.names = []; +exports.skips = []; +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ -/***/ }), +exports.formatters = {}; -/***/ "../../node_modules/cpy/node_modules/globby/index.js": -/***/ (function(module, exports, __webpack_require__) { +/** + * Previous log timestamp. + */ -"use strict"; +var prevTime; -const fs = __webpack_require__("fs"); -const arrayUnion = __webpack_require__("../../node_modules/cpy/node_modules/array-union/index.js"); -const glob = __webpack_require__("../../node_modules/glob/glob.js"); -const fastGlob = __webpack_require__("../../node_modules/fast-glob/index.js"); -const dirGlob = __webpack_require__("../../node_modules/cpy/node_modules/dir-glob/index.js"); -const gitignore = __webpack_require__("../../node_modules/cpy/node_modules/globby/gitignore.js"); +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ -const DEFAULT_FILTER = () => false; +function selectColor(namespace) { + var hash = 0, i; -const isNegative = pattern => pattern[0] === '!'; + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } -const assertPatternsInput = patterns => { - if (!patterns.every(x => typeof x === 'string')) { - throw new TypeError('Patterns must be a string or an array of strings'); - } -}; + return exports.colors[Math.abs(hash) % exports.colors.length]; +} -const checkCwdOption = options => { - if (options && options.cwd && !fs.statSync(options.cwd).isDirectory()) { - throw new Error('The `cwd` option must be a path to a directory'); - } -}; +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ -const generateGlobTasks = (patterns, taskOptions) => { - patterns = arrayUnion([].concat(patterns)); - assertPatternsInput(patterns); - checkCwdOption(taskOptions); +function createDebug(namespace) { - const globTasks = []; + function debug() { + // disabled? + if (!debug.enabled) return; - taskOptions = Object.assign({ - ignore: [], - expandDirectories: true - }, taskOptions); + var self = debug; - patterns.forEach((pattern, i) => { - if (isNegative(pattern)) { - return; - } + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; - const ignore = patterns - .slice(i) - .filter(isNegative) - .map(pattern => pattern.slice(1)); + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } - const options = Object.assign({}, taskOptions, { - ignore: taskOptions.ignore.concat(ignore) - }); + args[0] = exports.coerce(args[0]); - globTasks.push({pattern, options}); - }); + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } - return globTasks; -}; - -const globDirs = (task, fn) => { - let options = {}; - if (task.options.cwd) { - options.cwd = task.options.cwd; - } - - if (Array.isArray(task.options.expandDirectories)) { - options = Object.assign(options, {files: task.options.expandDirectories}); - } else if (typeof task.options.expandDirectories === 'object') { - options = Object.assign(options, task.options.expandDirectories); - } + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); - return fn(task.pattern, options); -}; + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); -const getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern]; + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); -const globToTask = task => glob => { - const {options} = task; - if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) { - options.ignore = dirGlob.sync(options.ignore); - } + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } - return { - pattern: glob, - options - }; -}; + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); -const globby = (patterns, options) => { - let globTasks; + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } - try { - globTasks = generateGlobTasks(patterns, options); - } catch (error) { - return Promise.reject(error); - } + return debug; +} - const getTasks = Promise.all(globTasks.map(task => Promise.resolve(getPattern(task, dirGlob)) - .then(globs => Promise.all(globs.map(globToTask(task)))) - )) - .then(tasks => arrayUnion(...tasks)); +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ - const getFilter = () => { - return Promise.resolve( - options && options.gitignore ? - gitignore({cwd: options.cwd, ignore: options.ignore}) : - DEFAULT_FILTER - ); - }; +function enable(namespaces) { + exports.save(namespaces); - return getFilter() - .then(filter => { - return getTasks - .then(tasks => Promise.all(tasks.map(task => fastGlob(task.pattern, task.options)))) - .then(paths => arrayUnion(...paths)) - .then(paths => paths.filter(p => !filter(p))); - }); -}; + exports.names = []; + exports.skips = []; -module.exports = globby; -// TODO: Remove this for the next major release -module.exports.default = globby; + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; -module.exports.sync = (patterns, options) => { - const globTasks = generateGlobTasks(patterns, options); + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } +} - const getFilter = () => { - return options && options.gitignore ? - gitignore.sync({cwd: options.cwd, ignore: options.ignore}) : - DEFAULT_FILTER; - }; +/** + * Disable debug output. + * + * @api public + */ - const tasks = globTasks.reduce((tasks, task) => { - const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); - return tasks.concat(newTask); - }, []); +function disable() { + exports.enable(''); +} - const filter = getFilter(); - return tasks.reduce( - (matches, task) => arrayUnion(matches, fastGlob.sync(task.pattern, task.options)), - [] - ).filter(p => !filter(p)); -}; +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ -module.exports.generateGlobTasks = generateGlobTasks; +function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} -module.exports.hasMagic = (patterns, options) => [] - .concat(patterns) - .some(pattern => glob.hasMagic(pattern, options)); +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ -module.exports.gitignore = gitignore; +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} /***/ }), -/***/ "../../node_modules/cpy/node_modules/ignore/index.js": -/***/ (function(module, exports) { +/***/ "../../node_modules/debug/src/index.js": +/***/ (function(module, exports, __webpack_require__) { -// A simple implementation of make-array -function make_array (subject) { - return Array.isArray(subject) - ? subject - : [subject] +/** + * Detect Electron renderer process, which is node, but we should + * treat as a browser. + */ + +if (typeof process !== 'undefined' && process.type === 'renderer') { + module.exports = __webpack_require__("../../node_modules/debug/src/browser.js"); +} else { + module.exports = __webpack_require__("../../node_modules/debug/src/node.js"); } -const REGEX_BLANK_LINE = /^\s+$/ -const REGEX_LEADING_EXCAPED_EXCLAMATION = /^\\!/ -const REGEX_LEADING_EXCAPED_HASH = /^\\#/ -const SLASH = '/' -const KEY_IGNORE = typeof Symbol !== 'undefined' - ? Symbol.for('node-ignore') - /* istanbul ignore next */ - : 'node-ignore' -const define = (object, key, value) => - Object.defineProperty(object, key, {value}) +/***/ }), -const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g +/***/ "../../node_modules/debug/src/node.js": +/***/ (function(module, exports, __webpack_require__) { -// Sanitize the range of a regular expression -// The cases are complicated, see test cases for details -const sanitizeRange = range => range.replace( - REGEX_REGEXP_RANGE, - (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) - ? match - // Invalid range (out of order) which is ok for gitignore rules but - // fatal for JavaScript regular expression, so eliminate it. - : '' -) +/** + * Module dependencies. + */ -// > If the pattern ends with a slash, -// > it is removed for the purpose of the following description, -// > but it would only find a match with a directory. -// > In other words, foo/ will match a directory foo and paths underneath it, -// > but will not match a regular file or a symbolic link foo -// > (this is consistent with the way how pathspec works in general in Git). -// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`' -// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call -// you could use option `mark: true` with `glob` +var tty = __webpack_require__("tty"); +var util = __webpack_require__("util"); -// '`foo/`' should not continue with the '`..`' -const DEFAULT_REPLACER_PREFIX = [ +/** + * This is the Node.js implementation of `debug()`. + * + * Expose `debug()` as the module. + */ - // > Trailing spaces are ignored unless they are quoted with backslash ("\") - [ - // (a\ ) -> (a ) - // (a ) -> (a) - // (a \ ) -> (a ) - /\\?\s+$/, - match => match.indexOf('\\') === 0 - ? ' ' - : '' - ], +exports = module.exports = __webpack_require__("../../node_modules/debug/src/debug.js"); +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; - // replace (\ ) with ' ' - [ - /\\\s/g, - () => ' ' - ], +/** + * Colors. + */ - // Escape metacharacters - // which is written down by users but means special for regular expressions. +exports.colors = [6, 2, 3, 4, 5, 1]; - // > There are 12 characters with special meanings: - // > - the backslash \, - // > - the caret ^, - // > - the dollar sign $, - // > - the period or dot ., - // > - the vertical bar or pipe symbol |, - // > - the question mark ?, - // > - the asterisk or star *, - // > - the plus sign +, - // > - the opening parenthesis (, - // > - the closing parenthesis ), - // > - and the opening square bracket [, - // > - the opening curly brace {, - // > These special characters are often called "metacharacters". - [ - /[\\^$.|*+(){]/g, - match => `\\${match}` - ], +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ - [ - // > [abc] matches any character inside the brackets - // > (in this case a, b, or c); - /\[([^\]/]*)($|\])/g, - (match, p1, p2) => p2 === ']' - ? `[${sanitizeRange(p1)}]` - : `\\${match}` - ], +exports.inspectOpts = Object.keys(process.env).filter(function (key) { + return /^debug_/i.test(key); +}).reduce(function (obj, key) { + // camel-case + var prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); - [ - // > a question mark (?) matches a single character - /(?!\\)\?/g, - () => '[^/]' - ], + // coerce string value into JS value + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) val = false; + else if (val === 'null') val = null; + else val = Number(val); - // leading slash - [ + obj[prop] = val; + return obj; +}, {}); - // > A leading slash matches the beginning of the pathname. - // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". - // A leading slash matches the beginning of the pathname - /^\//, - () => '^' - ], +/** + * The file descriptor to write the `debug()` calls to. + * Set the `DEBUG_FD` env variable to override with another value. i.e.: + * + * $ DEBUG_FD=3 node script.js 3>debug.log + */ - // replace special metacharacter slash after the leading slash - [ - /\//g, - () => '\\/' - ], +var fd = parseInt(process.env.DEBUG_FD, 10) || 2; - [ - // > A leading "**" followed by a slash means match in all directories. - // > For example, "**/foo" matches file or directory "foo" anywhere, - // > the same as pattern "foo". - // > "**/foo/bar" matches file or directory "bar" anywhere that is directly - // > under directory "foo". - // Notice that the '*'s have been replaced as '\\*' - /^\^*\\\*\\\*\\\//, +if (1 !== fd && 2 !== fd) { + util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() +} - // '**/foo' <-> 'foo' - () => '^(?:.*\\/)?' - ] -] +var stream = 1 === fd ? process.stdout : + 2 === fd ? process.stderr : + createWritableStdioStream(fd); -const DEFAULT_REPLACER_SUFFIX = [ - // starting - [ - // there will be no leading '/' - // (which has been replaced by section "leading slash") - // If starts with '**', adding a '^' to the regular expression also works - /^(?=[^^])/, - function startingReplacer () { - return !/\/(?!$)/.test(this) - // > If the pattern does not contain a slash /, - // > Git treats it as a shell glob pattern - // Actually, if there is only a trailing slash, - // git also treats it as a shell glob pattern - ? '(?:^|\\/)' +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ - // > Otherwise, Git treats the pattern as a shell glob suitable for - // > consumption by fnmatch(3) - : '^' - } - ], +function useColors() { + return 'colors' in exports.inspectOpts + ? Boolean(exports.inspectOpts.colors) + : tty.isatty(fd); +} - // two globstars - [ - // Use lookahead assertions so that we could match more than one `'/**'` - /\\\/\\\*\\\*(?=\\\/|$)/g, +/** + * Map %o to `util.inspect()`, all on a single line. + */ - // Zero, one or several directories - // should not use '*', or it will be replaced by the next replacer +exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n').map(function(str) { + return str.trim() + }).join(' '); +}; - // Check if it is not the last `'/**'` - (match, index, str) => index + 6 < str.length +/** + * Map %o to `util.inspect()`, allowing multiple lines if needed. + */ - // case: /**/ - // > A slash followed by two consecutive asterisks then a slash matches - // > zero or more directories. - // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on. - // '/**/' - ? '(?:\\/[^\\/]+)*' +exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; - // case: /** - // > A trailing `"/**"` matches everything inside. +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ - // #21: everything inside but it should not include the current folder - : '\\/.+' - ], +function formatArgs(args) { + var name = this.namespace; + var useColors = this.useColors; - // intermediate wildcards - [ - // Never replace escaped '*' - // ignore rule '\*' will match the path '*' + if (useColors) { + var c = this.color; + var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; - // 'abc.*/' -> go - // 'abc.*' -> skip this rule - /(^|[^\\]+)\\\*(?=.+)/g, + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); + } else { + args[0] = new Date().toUTCString() + + ' ' + name + ' ' + args[0]; + } +} - // '*.js' matches '.js' - // '*.js' doesn't match 'abc' - (match, p1) => `${p1}[^\\/]*` - ], +/** + * Invokes `util.format()` with the specified arguments and writes to `stream`. + */ - // trailing wildcard - [ - /(\^|\\\/)?\\\*$/, - (match, p1) => { - const prefix = p1 - // '\^': - // '/*' does not match '' - // '/*' does not match everything +function log() { + return stream.write(util.format.apply(util, arguments) + '\n'); +} - // '\\\/': - // 'abc/*' does not match 'abc/' - ? `${p1}[^/]+` +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ - // 'a*' matches 'a' - // 'a*' matches 'aa' - : '[^/]*' +function save(namespaces) { + if (null == namespaces) { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } +} - return `${prefix}(?=$|\\/$)` - } - ], +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ - [ - // unescape - /\\\\\\/g, - () => '\\' - ] -] +function load() { + return process.env.DEBUG; +} -const POSITIVE_REPLACERS = [ - ...DEFAULT_REPLACER_PREFIX, - - // 'f' - // matches - // - /f(end) - // - /f/ - // - (start)f(end) - // - (start)f/ - // doesn't match - // - oof - // - foo - // pseudo: - // -> (^|/)f(/|$) +/** + * Copied from `node/src/node.js`. + * + * XXX: It's lame that node doesn't expose this API out-of-the-box. It also + * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. + */ - // ending - [ - // 'js' will not match 'js.' - // 'ab' will not match 'abc' - /(?:[^*/])$/, +function createWritableStdioStream (fd) { + var stream; + var tty_wrap = process.binding('tty_wrap'); - // 'js*' will not match 'a.js' - // 'js/' will not match 'a.js' - // 'js' will match 'a.js' and 'a.js/' - match => `${match}(?=$|\\/)` - ], + // Note stream._type is used for test-module-load-list.js - ...DEFAULT_REPLACER_SUFFIX -] + switch (tty_wrap.guessHandleType(fd)) { + case 'TTY': + stream = new tty.WriteStream(fd); + stream._type = 'tty'; -const NEGATIVE_REPLACERS = [ - ...DEFAULT_REPLACER_PREFIX, + // Hack to have stream not keep the event loop alive. + // See https://github.com/joyent/node/issues/1726 + if (stream._handle && stream._handle.unref) { + stream._handle.unref(); + } + break; - // #24, #38 - // The MISSING rule of [gitignore docs](https://git-scm.com/docs/gitignore) - // A negative pattern without a trailing wildcard should not - // re-include the things inside that directory. + case 'FILE': + var fs = __webpack_require__("fs"); + stream = new fs.SyncWriteStream(fd, { autoClose: false }); + stream._type = 'fs'; + break; - // eg: - // ['node_modules/*', '!node_modules'] - // should ignore `node_modules/a.js` - [ - /(?:[^*])$/, - match => `${match}(?=$|\\/$)` - ], + case 'PIPE': + case 'TCP': + var net = __webpack_require__("net"); + stream = new net.Socket({ + fd: fd, + readable: false, + writable: true + }); - ...DEFAULT_REPLACER_SUFFIX -] + // FIXME Should probably have an option in net.Socket to create a + // stream from an existing fd which is writable only. But for now + // we'll just add this hack and set the `readable` member to false. + // Test: ./node test/fixtures/echo.js < /etc/passwd + stream.readable = false; + stream.read = null; + stream._type = 'pipe'; -// A simple cache, because an ignore rule only has only one certain meaning -const cache = Object.create(null) + // FIXME Hack to have stream not keep the event loop alive. + // See https://github.com/joyent/node/issues/1726 + if (stream._handle && stream._handle.unref) { + stream._handle.unref(); + } + break; -// @param {pattern} -const make_regex = (pattern, negative, ignorecase) => { - const r = cache[pattern] - if (r) { - return r + default: + // Probably an error on in uv_guess_handle() + throw new Error('Implement me. Unknown stream file type!'); } - const replacers = negative - ? NEGATIVE_REPLACERS - : POSITIVE_REPLACERS + // For supporting legacy API we put the FD here. + stream.fd = fd; - const source = replacers.reduce( - (prev, current) => prev.replace(current[0], current[1].bind(pattern)), - pattern - ) + stream._isStdio = true; - return cache[pattern] = ignorecase - ? new RegExp(source, 'i') - : new RegExp(source) + return stream; } -// > A blank line matches no files, so it can serve as a separator for readability. -const checkPattern = pattern => pattern - && typeof pattern === 'string' - && !REGEX_BLANK_LINE.test(pattern) - - // > A line starting with # serves as a comment. - && pattern.indexOf('#') !== 0 - -const createRule = (pattern, ignorecase) => { - const origin = pattern - let negative = false - - // > An optional prefix "!" which negates the pattern; - if (pattern.indexOf('!') === 0) { - negative = true - pattern = pattern.substr(1) - } - - pattern = pattern - // > Put a backslash ("\") in front of the first "!" for patterns that - // > begin with a literal "!", for example, `"\!important!.txt"`. - .replace(REGEX_LEADING_EXCAPED_EXCLAMATION, '!') - // > Put a backslash ("\") in front of the first hash for patterns that - // > begin with a hash. - .replace(REGEX_LEADING_EXCAPED_HASH, '#') +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ - const regex = make_regex(pattern, negative, ignorecase) +function init (debug) { + debug.inspectOpts = {}; - return { - origin, - pattern, - negative, - regex + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; } } -class IgnoreBase { - constructor ({ - ignorecase = true - } = {}) { - this._rules = [] - this._ignorecase = ignorecase - define(this, KEY_IGNORE, true) - this._initCache() - } - - _initCache () { - this._cache = Object.create(null) - } - - // @param {Array.|string|Ignore} pattern - add (pattern) { - this._added = false - - if (typeof pattern === 'string') { - pattern = pattern.split(/\r?\n/g) - } +/** + * Enable namespaces listed in `process.env.DEBUG` initially. + */ - make_array(pattern).forEach(this._addPattern, this) +exports.enable(load()); - // Some rules have just added to the ignore, - // making the behavior changed. - if (this._added) { - this._initCache() - } - return this - } +/***/ }), - // legacy - addPattern (pattern) { - return this.add(pattern) - } +/***/ "../../node_modules/dedent/dist/dedent.js": +/***/ (function(module, exports, __webpack_require__) { - _addPattern (pattern) { - // #32 - if (pattern && pattern[KEY_IGNORE]) { - this._rules = this._rules.concat(pattern._rules) - this._added = true - return - } +"use strict"; - if (checkPattern(pattern)) { - const rule = createRule(pattern, this._ignorecase) - this._added = true - this._rules.push(rule) - } - } - filter (paths) { - return make_array(paths).filter(path => this._filter(path)) - } +function dedent(strings) { - createFilter () { - return path => this._filter(path) + var raw = void 0; + if (typeof strings === "string") { + // dedent can be used as a plain function + raw = [strings]; + } else { + raw = strings.raw; } - ignores (path) { - return !this._filter(path) - } + // first, perform interpolation + var result = ""; + for (var i = 0; i < raw.length; i++) { + result += raw[i]. + // join lines when there is a suppressed newline + replace(/\\\n[ \t]*/g, ""). - // @returns `Boolean` true if the `path` is NOT ignored - _filter (path, slices) { - if (!path) { - return false - } + // handle escaped backticks + replace(/\\`/g, "`"); - if (path in this._cache) { - return this._cache[path] + if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) { + result += arguments.length <= i + 1 ? undefined : arguments[i + 1]; } + } - if (!slices) { - // path/to/a.js - // ['path', 'to', 'a.js'] - slices = path.split(SLASH) + // now strip indentation + var lines = result.split("\n"); + var mindent = null; + lines.forEach(function (l) { + var m = l.match(/^(\s+)\S+/); + if (m) { + var indent = m[1].length; + if (!mindent) { + // this is the first indented line + mindent = indent; + } else { + mindent = Math.min(mindent, indent); + } } + }); - slices.pop() - - return this._cache[path] = slices.length - // > It is not possible to re-include a file if a parent directory of - // > that file is excluded. - // If the path contains a parent directory, check the parent first - ? this._filter(slices.join(SLASH) + SLASH, slices) - && this._test(path) - - // Or only test the path - : this._test(path) + if (mindent !== null) { + result = lines.map(function (l) { + return l[0] === " " ? l.slice(mindent) : l; + }).join("\n"); } - // @returns {Boolean} true if a file is NOT ignored - _test (path) { - // Explicitly define variable type by setting matched to `0` - let matched = 0 + // dedent eats leading and trailing whitespace too + result = result.trim(); - this._rules.forEach(rule => { - // if matched = true, then we only test negative rules - // if matched = false, then we test non-negative rules - if (!(matched ^ rule.negative)) { - matched = rule.negative ^ rule.regex.test(path) - } - }) + // handle escaped newlines at the end to ensure they don't get stripped too + return result.replace(/\\n/g, "\n"); +} - return !matched - } +if (true) { + module.exports = dedent; } -// Windows -// -------------------------------------------------------------- -/* istanbul ignore if */ -if ( - // Detect `process` so that it can run in browsers. - typeof process !== 'undefined' - && ( - process.env && process.env.IGNORE_TEST_WIN32 - || process.platform === 'win32' - ) -) { - const filter = IgnoreBase.prototype._filter - /* eslint no-control-regex: "off" */ - const make_posix = str => /^\\\\\?\\/.test(str) - || /[^\x00-\x80]+/.test(str) - ? str - : str.replace(/\\/g, '/') +/***/ }), - IgnoreBase.prototype._filter = function filterWin32 (path, slices) { - path = make_posix(path) - return filter.call(this, path, slices) - } -} +/***/ "../../node_modules/defaults/index.js": +/***/ (function(module, exports, __webpack_require__) { + +var clone = __webpack_require__("../../node_modules/clone/clone.js"); + +module.exports = function(options, defaults) { + options = options || {}; -module.exports = options => new IgnoreBase(options) + Object.keys(defaults).forEach(function(key) { + if (typeof options[key] === 'undefined') { + options[key] = clone(defaults[key]); + } + }); + return options; +}; /***/ }), -/***/ "../../node_modules/cpy/node_modules/indent-string/index.js": +/***/ "../../node_modules/del/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +const {promisify} = __webpack_require__("util"); +const path = __webpack_require__("path"); +const globby = __webpack_require__("../../node_modules/del/node_modules/globby/index.js"); +const isGlob = __webpack_require__("../../node_modules/is-glob/index.js"); +const slash = __webpack_require__("../../node_modules/slash/index.js"); +const gracefulFs = __webpack_require__("../../node_modules/graceful-fs/graceful-fs.js"); +const isPathCwd = __webpack_require__("../../node_modules/is-path-cwd/index.js"); +const isPathInside = __webpack_require__("../../node_modules/is-path-inside/index.js"); +const rimraf = __webpack_require__("../../node_modules/rimraf/rimraf.js"); +const pMap = __webpack_require__("../../node_modules/del/node_modules/p-map/index.js"); -module.exports = (string, count = 1, options) => { - options = { - indent: ' ', - includeEmptyLines: false, - ...options - }; +const rimrafP = promisify(rimraf); - if (typeof string !== 'string') { - throw new TypeError( - `Expected \`input\` to be a \`string\`, got \`${typeof string}\`` - ); - } +const rimrafOptions = { + glob: false, + unlink: gracefulFs.unlink, + unlinkSync: gracefulFs.unlinkSync, + chmod: gracefulFs.chmod, + chmodSync: gracefulFs.chmodSync, + stat: gracefulFs.stat, + statSync: gracefulFs.statSync, + lstat: gracefulFs.lstat, + lstatSync: gracefulFs.lstatSync, + rmdir: gracefulFs.rmdir, + rmdirSync: gracefulFs.rmdirSync, + readdir: gracefulFs.readdir, + readdirSync: gracefulFs.readdirSync +}; - if (typeof count !== 'number') { - throw new TypeError( - `Expected \`count\` to be a \`number\`, got \`${typeof count}\`` - ); +function safeCheck(file, cwd) { + if (isPathCwd(file)) { + throw new Error('Cannot delete the current working directory. Can be overridden with the `force` option.'); } - if (typeof options.indent !== 'string') { - throw new TypeError( - `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\`` - ); + if (!isPathInside(file, cwd)) { + throw new Error('Cannot delete files/directories outside the current working directory. Can be overridden with the `force` option.'); } +} - if (count === 0) { - return string; - } +function normalizePatterns(patterns) { + patterns = Array.isArray(patterns) ? patterns : [patterns]; - const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm; + patterns = patterns.map(pattern => { + if (process.platform === 'win32' && isGlob(pattern) === false) { + return slash(pattern); + } - return string.replace(regex, options.indent.repeat(count)); -}; + return pattern; + }); + return patterns; +} -/***/ }), +module.exports = async (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => { + options = { + expandDirectories: false, + onlyFiles: false, + followSymbolicLinks: false, + cwd, + ...options + }; -/***/ "../../node_modules/cpy/node_modules/p-map/index.js": -/***/ (function(module, exports, __webpack_require__) { + patterns = normalizePatterns(patterns); -"use strict"; + const files = (await globby(patterns, options)) + .sort((a, b) => b.localeCompare(a)); -const AggregateError = __webpack_require__("../../node_modules/cpy/node_modules/aggregate-error/index.js"); + const mapper = async file => { + file = path.resolve(cwd, file); -module.exports = async ( - iterable, - mapper, - { - concurrency = Infinity, - stopOnError = true - } = {} -) => { - return new Promise((resolve, reject) => { - if (typeof mapper !== 'function') { - throw new TypeError('Mapper function is required'); + if (!force) { + safeCheck(file, cwd); } - if (!(typeof concurrency === 'number' && concurrency >= 1)) { - throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${concurrency}\` (${typeof concurrency})`); + if (!dryRun) { + await rimrafP(file, rimrafOptions); } - const ret = []; - const errors = []; - const iterator = iterable[Symbol.iterator](); - let isRejected = false; - let isIterableDone = false; - let resolvingCount = 0; - let currentIndex = 0; + return file; + }; - const next = () => { - if (isRejected) { - return; - } + const removedFiles = await pMap(files, mapper, options); - const nextItem = iterator.next(); - const i = currentIndex; - currentIndex++; + removedFiles.sort((a, b) => a.localeCompare(b)); - if (nextItem.done) { - isIterableDone = true; + return removedFiles; +}; - if (resolvingCount === 0) { - if (!stopOnError && errors.length !== 0) { - reject(new AggregateError(errors)); - } else { - resolve(ret); - } - } +module.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => { + options = { + expandDirectories: false, + onlyFiles: false, + followSymbolicLinks: false, + cwd, + ...options + }; - return; - } + patterns = normalizePatterns(patterns); - resolvingCount++; + const files = globby.sync(patterns, options) + .sort((a, b) => b.localeCompare(a)); - (async () => { - try { - const element = await nextItem.value; - ret[i] = await mapper(element, i); - resolvingCount--; - next(); - } catch (error) { - if (stopOnError) { - isRejected = true; - reject(error); - } else { - errors.push(error); - resolvingCount--; - next(); - } - } - })(); - }; + const removedFiles = files.map(file => { + file = path.resolve(cwd, file); - for (let i = 0; i < concurrency; i++) { - next(); + if (!force) { + safeCheck(file, cwd); + } - if (isIterableDone) { - break; - } + if (!dryRun) { + rimraf.sync(file, rimrafOptions); } + + return file; }); + + removedFiles.sort((a, b) => a.localeCompare(b)); + + return removedFiles; }; /***/ }), -/***/ "../../node_modules/cpy/node_modules/path-type/index.js": +/***/ "../../node_modules/del/node_modules/aggregate-error/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__("fs"); -const pify = __webpack_require__("../../node_modules/cpy/node_modules/path-type/node_modules/pify/index.js"); +const indentString = __webpack_require__("../../node_modules/del/node_modules/indent-string/index.js"); +const cleanStack = __webpack_require__("../../node_modules/clean-stack/index.js"); -function type(fn, fn2, fp) { - if (typeof fp !== 'string') { - return Promise.reject(new TypeError(`Expected a string, got ${typeof fp}`)); - } +const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); - return pify(fs[fn])(fp) - .then(stats => stats[fn2]()) - .catch(err => { - if (err.code === 'ENOENT') { - return false; +class AggregateError extends Error { + constructor(errors) { + if (!Array.isArray(errors)) { + throw new TypeError(`Expected input to be an Array, got ${typeof errors}`); + } + + errors = [...errors].map(error => { + if (error instanceof Error) { + return error; + } + + if (error !== null && typeof error === 'object') { + // Handle plain error objects with message property and/or possibly other metadata + return Object.assign(new Error(error.message), error); } - throw err; + return new Error(error); }); -} -function typeSync(fn, fn2, fp) { - if (typeof fp !== 'string') { - throw new TypeError(`Expected a string, got ${typeof fp}`); + let message = errors + .map(error => { + // The `stack` property is not standardized, so we can't assume it exists + return typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error); + }) + .join('\n'); + message = '\n' + indentString(message, 4); + super(message); + + this.name = 'AggregateError'; + + Object.defineProperty(this, '_errors', {value: errors}); } - try { - return fs[fn](fp)[fn2](); - } catch (err) { - if (err.code === 'ENOENT') { - return false; + * [Symbol.iterator]() { + for (const error of this._errors) { + yield error; } - - throw err; } } -exports.file = type.bind(null, 'stat', 'isFile'); -exports.dir = type.bind(null, 'stat', 'isDirectory'); -exports.symlink = type.bind(null, 'lstat', 'isSymbolicLink'); -exports.fileSync = typeSync.bind(null, 'statSync', 'isFile'); -exports.dirSync = typeSync.bind(null, 'statSync', 'isDirectory'); -exports.symlinkSync = typeSync.bind(null, 'lstatSync', 'isSymbolicLink'); +module.exports = AggregateError; /***/ }), -/***/ "../../node_modules/cpy/node_modules/path-type/node_modules/pify/index.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +const taskManager = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/managers/tasks.js"); +const async_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/async.js"); +const stream_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/stream.js"); +const sync_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/sync.js"); +const settings_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/settings.js"); +const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); +async function FastGlob(source, options) { + assertPatternsInput(source); + const works = getWorks(source, async_1.default, options); + const result = await Promise.all(works); + return utils.array.flatten(result); +} +// https://github.com/typescript-eslint/typescript-eslint/issues/60 +// eslint-disable-next-line no-redeclare +(function (FastGlob) { + function sync(source, options) { + assertPatternsInput(source); + const works = getWorks(source, sync_1.default, options); + return utils.array.flatten(works); + } + FastGlob.sync = sync; + function stream(source, options) { + assertPatternsInput(source); + const works = getWorks(source, stream_1.default, options); + /** + * The stream returned by the provider cannot work with an asynchronous iterator. + * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams. + * This affects performance (+25%). I don't see best solution right now. + */ + return utils.stream.merge(works); + } + FastGlob.stream = stream; + function generateTasks(source, options) { + assertPatternsInput(source); + const patterns = [].concat(source); + const settings = new settings_1.default(options); + return taskManager.generate(patterns, settings); + } + FastGlob.generateTasks = generateTasks; + function isDynamicPattern(source, options) { + assertPatternsInput(source); + const settings = new settings_1.default(options); + return utils.pattern.isDynamicPattern(source, settings); + } + FastGlob.isDynamicPattern = isDynamicPattern; + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escape(source); + } + FastGlob.escapePath = escapePath; +})(FastGlob || (FastGlob = {})); +function getWorks(source, _Provider, options) { + const patterns = [].concat(source); + const settings = new settings_1.default(options); + const tasks = taskManager.generate(patterns, settings); + const provider = new _Provider(settings); + return tasks.map(provider.read, provider); +} +function assertPatternsInput(input) { + const source = [].concat(input); + const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); + if (!isValidSource) { + throw new TypeError('Patterns must be a string (non empty) or an array of strings'); + } +} +module.exports = FastGlob; -const processFn = (fn, opts) => function () { - const P = opts.promiseModule; - const args = new Array(arguments.length); - - for (let i = 0; i < arguments.length; i++) { - args[i] = arguments[i]; - } - - return new P((resolve, reject) => { - if (opts.errorFirst) { - args.push(function (err, result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 1; i < arguments.length; i++) { - results[i - 1] = arguments[i]; - } - - if (err) { - results.unshift(err); - reject(results); - } else { - resolve(results); - } - } else if (err) { - reject(err); - } else { - resolve(result); - } - }); - } else { - args.push(function (result) { - if (opts.multiArgs) { - const results = new Array(arguments.length - 1); - - for (let i = 0; i < arguments.length; i++) { - results[i] = arguments[i]; - } - resolve(results); - } else { - resolve(result); - } - }); - } +/***/ }), - fn.apply(this, args); - }); -}; +/***/ "../../node_modules/del/node_modules/fast-glob/out/managers/tasks.js": +/***/ (function(module, exports, __webpack_require__) { -module.exports = (obj, opts) => { - opts = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, opts); +"use strict"; - const filter = key => { - const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); - return opts.include ? opts.include.some(match) : !opts.exclude.some(match); - }; - - let ret; - if (typeof obj === 'function') { - ret = function () { - if (opts.excludeMain) { - return obj.apply(this, arguments); - } - - return processFn(obj, opts).apply(this, arguments); - }; - } else { - ret = Object.create(Object.getPrototypeOf(obj)); - } - - for (const key in obj) { // eslint-disable-line guard-for-in - const x = obj[key]; - ret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x; - } - - return ret; -}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; +const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); +function generate(patterns, settings) { + const positivePatterns = getPositivePatterns(patterns); + const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); + const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); + const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); + const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); + const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); + return staticTasks.concat(dynamicTasks); +} +exports.generate = generate; +/** + * Returns tasks grouped by basic pattern directories. + * + * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately. + * This is necessary because directory traversal starts at the base directory and goes deeper. + */ +function convertPatternsToTasks(positive, negative, dynamic) { + const tasks = []; + const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); + const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); + const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); + const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); + tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); + /* + * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory + * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest. + */ + if ('.' in insideCurrentDirectoryGroup) { + tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic)); + } + else { + tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); + } + return tasks; +} +exports.convertPatternsToTasks = convertPatternsToTasks; +function getPositivePatterns(patterns) { + return utils.pattern.getPositivePatterns(patterns); +} +exports.getPositivePatterns = getPositivePatterns; +function getNegativePatternsAsPositive(patterns, ignore) { + const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); + const positive = negative.map(utils.pattern.convertToPositivePattern); + return positive; +} +exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; +function groupPatternsByBaseDirectory(patterns) { + const group = {}; + return patterns.reduce((collection, pattern) => { + const base = utils.pattern.getBaseDirectory(pattern); + if (base in collection) { + collection[base].push(pattern); + } + else { + collection[base] = [pattern]; + } + return collection; + }, group); +} +exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; +function convertPatternGroupsToTasks(positive, negative, dynamic) { + return Object.keys(positive).map((base) => { + return convertPatternGroupToTask(base, positive[base], negative, dynamic); + }); +} +exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; +function convertPatternGroupToTask(base, positive, negative, dynamic) { + return { + dynamic, + positive, + negative, + base, + patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) + }; +} +exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/***/ "../../node_modules/cpy/node_modules/slash/index.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/async.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = input => { - const isExtendedLengthPath = /^\\\\\?\\/.test(input); - const hasNonAscii = /[^\u0000-\u0080]+/.test(input); // eslint-disable-line no-control-regex - - if (isExtendedLengthPath || hasNonAscii) { - return input; - } - - return input.replace(/\\/g, '/'); -}; +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/stream.js"); +const provider_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/provider.js"); +class ProviderAsync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = []; + return new Promise((resolve, reject) => { + const stream = this.api(root, task, options); + stream.once('error', reject); + stream.on('data', (entry) => entries.push(options.transform(entry))); + stream.once('end', () => resolve(entries)); + }); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderAsync; /***/ }), -/***/ "../../node_modules/cross-spawn/index.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/filters/deep.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); +const partial_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/matchers/partial.js"); +class DeepFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + } + getFilter(basePath, positive, negative) { + const matcher = this._getMatcher(positive); + const negativeRe = this._getNegativePatternsRe(negative); + return (entry) => this._filter(basePath, entry, matcher, negativeRe); + } + _getMatcher(patterns) { + return new partial_1.default(patterns, this._settings, this._micromatchOptions); + } + _getNegativePatternsRe(patterns) { + const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); + return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); + } + _filter(basePath, entry, matcher, negativeRe) { + if (this._isSkippedByDeep(basePath, entry.path)) { + return false; + } + if (this._isSkippedSymbolicLink(entry)) { + return false; + } + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._isSkippedByPositivePatterns(filepath, matcher)) { + return false; + } + return this._isSkippedByNegativePatterns(filepath, negativeRe); + } + _isSkippedByDeep(basePath, entryPath) { + /** + * Avoid unnecessary depth calculations when it doesn't matter. + */ + if (this._settings.deep === Infinity) { + return false; + } + return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; + } + _getEntryLevel(basePath, entryPath) { + const entryPathDepth = entryPath.split('/').length; + if (basePath === '') { + return entryPathDepth; + } + const basePathDepth = basePath.split('/').length; + return entryPathDepth - basePathDepth; + } + _isSkippedSymbolicLink(entry) { + return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); + } + _isSkippedByPositivePatterns(entryPath, matcher) { + return !this._settings.baseNameMatch && !matcher.match(entryPath); + } + _isSkippedByNegativePatterns(entryPath, patternsRe) { + return !utils.pattern.matchAny(entryPath, patternsRe); + } +} +exports.default = DeepFilter; -const cp = __webpack_require__("child_process"); -const parse = __webpack_require__("../../node_modules/cross-spawn/lib/parse.js"); -const enoent = __webpack_require__("../../node_modules/cross-spawn/lib/enoent.js"); -function spawn(command, args, options) { - // Parse the arguments - const parsed = parse(command, args, options); +/***/ }), - // Spawn the child process - const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/filters/entry.js": +/***/ (function(module, exports, __webpack_require__) { - // Hook into child process "exit" event to emit an error if the command - // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 - enoent.hookChildProcess(spawned, parsed); +"use strict"; - return spawned; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); +class EntryFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this.index = new Map(); + } + getFilter(positive, negative) { + const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); + const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions); + return (entry) => this._filter(entry, positiveRe, negativeRe); + } + _filter(entry, positiveRe, negativeRe) { + if (this._settings.unique && this._isDuplicateEntry(entry)) { + return false; + } + if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { + return false; + } + if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) { + return false; + } + const filepath = this._settings.baseNameMatch ? entry.name : entry.path; + const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe); + if (this._settings.unique && isMatched) { + this._createIndexRecord(entry); + } + return isMatched; + } + _isDuplicateEntry(entry) { + return this.index.has(entry.path); + } + _createIndexRecord(entry) { + this.index.set(entry.path, undefined); + } + _onlyFileFilter(entry) { + return this._settings.onlyFiles && !entry.dirent.isFile(); + } + _onlyDirectoryFilter(entry) { + return this._settings.onlyDirectories && !entry.dirent.isDirectory(); + } + _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { + if (!this._settings.absolute) { + return false; + } + const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); + return utils.pattern.matchAny(fullpath, patternsRe); + } + _isMatchToPatterns(entryPath, patternsRe) { + const filepath = utils.path.removeLeadingDotSegment(entryPath); + return utils.pattern.matchAny(filepath, patternsRe); + } } +exports.default = EntryFilter; -function spawnSync(command, args, options) { - // Parse the arguments - const parsed = parse(command, args, options); - - // Spawn the child process - const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); - // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 - result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); +/***/ }), - return result; -} +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/filters/error.js": +/***/ (function(module, exports, __webpack_require__) { -module.exports = spawn; -module.exports.spawn = spawn; -module.exports.sync = spawnSync; +"use strict"; -module.exports._parse = parse; -module.exports._enoent = enoent; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); +class ErrorFilter { + constructor(_settings) { + this._settings = _settings; + } + getFilter() { + return (error) => this._isNonFatalError(error); + } + _isNonFatalError(error) { + return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors; + } +} +exports.default = ErrorFilter; /***/ }), -/***/ "../../node_modules/cross-spawn/lib/enoent.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/matchers/matcher.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -const isWin = process.platform === 'win32'; - -function notFoundError(original, syscall) { - return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { - code: 'ENOENT', - errno: 'ENOENT', - syscall: `${syscall} ${original.command}`, - path: original.command, - spawnargs: original.args, - }); -} - -function hookChildProcess(cp, parsed) { - if (!isWin) { - return; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); +class Matcher { + constructor(_patterns, _settings, _micromatchOptions) { + this._patterns = _patterns; + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this._storage = []; + this._fillStorage(); } - - const originalEmit = cp.emit; - - cp.emit = function (name, arg1) { - // If emitting "exit" event and exit code is 1, we need to check if - // the command exists and emit an "error" instead - // See https://github.com/IndigoUnited/node-cross-spawn/issues/16 - if (name === 'exit') { - const err = verifyENOENT(arg1, parsed, 'spawn'); - - if (err) { - return originalEmit.call(cp, 'error', err); - } + _fillStorage() { + /** + * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level). + * So, before expand patterns with brace expansion into separated patterns. + */ + const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns); + for (const pattern of patterns) { + const segments = this._getPatternSegments(pattern); + const sections = this._splitSegmentsIntoSections(segments); + this._storage.push({ + complete: sections.length <= 1, + pattern, + segments, + sections + }); } - - return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params - }; -} - -function verifyENOENT(status, parsed) { - if (isWin && status === 1 && !parsed.file) { - return notFoundError(parsed.original, 'spawn'); } - - return null; -} - -function verifyENOENTSync(status, parsed) { - if (isWin && status === 1 && !parsed.file) { - return notFoundError(parsed.original, 'spawnSync'); + _getPatternSegments(pattern) { + const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); + return parts.map((part) => { + const dynamic = utils.pattern.isDynamicPattern(part, this._settings); + if (!dynamic) { + return { + dynamic: false, + pattern: part + }; + } + return { + dynamic: true, + pattern: part, + patternRe: utils.pattern.makeRe(part, this._micromatchOptions) + }; + }); + } + _splitSegmentsIntoSections(segments) { + return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); } - - return null; } - -module.exports = { - hookChildProcess, - verifyENOENT, - verifyENOENTSync, - notFoundError, -}; +exports.default = Matcher; /***/ }), -/***/ "../../node_modules/cross-spawn/lib/parse.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/matchers/partial.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const matcher_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/matchers/matcher.js"); +class PartialMatcher extends matcher_1.default { + match(filepath) { + const parts = filepath.split('/'); + const levels = parts.length; + const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels); + for (const pattern of patterns) { + const section = pattern.sections[0]; + /** + * In this case, the pattern has a globstar and we must read all directories unconditionally, + * but only if the level has reached the end of the first group. + * + * fixtures/{a,b}/** + * ^ true/false ^ always true + */ + if (!pattern.complete && levels > section.length) { + return true; + } + const match = parts.every((part, index) => { + const segment = pattern.segments[index]; + if (segment.dynamic && segment.patternRe.test(part)) { + return true; + } + if (!segment.dynamic && segment.pattern === part) { + return true; + } + return false; + }); + if (match) { + return true; + } + } + return false; + } +} +exports.default = PartialMatcher; -const path = __webpack_require__("path"); -const resolveCommand = __webpack_require__("../../node_modules/cross-spawn/lib/util/resolveCommand.js"); -const escape = __webpack_require__("../../node_modules/cross-spawn/lib/util/escape.js"); -const readShebang = __webpack_require__("../../node_modules/cross-spawn/lib/util/readShebang.js"); - -const isWin = process.platform === 'win32'; -const isExecutableRegExp = /\.(?:com|exe)$/i; -const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; -function detectShebang(parsed) { - parsed.file = resolveCommand(parsed); +/***/ }), - const shebang = parsed.file && readShebang(parsed.file); +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/provider.js": +/***/ (function(module, exports, __webpack_require__) { - if (shebang) { - parsed.args.unshift(parsed.file); - parsed.command = shebang; +"use strict"; - return resolveCommand(parsed); +Object.defineProperty(exports, "__esModule", { value: true }); +const path = __webpack_require__("path"); +const deep_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/filters/deep.js"); +const entry_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/filters/entry.js"); +const error_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/filters/error.js"); +const entry_2 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/transformers/entry.js"); +class Provider { + constructor(_settings) { + this._settings = _settings; + this.errorFilter = new error_1.default(this._settings); + this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); + this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); + this.entryTransformer = new entry_2.default(this._settings); + } + _getRootDirectory(task) { + return path.resolve(this._settings.cwd, task.base); + } + _getReaderOptions(task) { + const basePath = task.base === '.' ? '' : task.base; + return { + basePath, + pathSegmentSeparator: '/', + concurrency: this._settings.concurrency, + deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), + entryFilter: this.entryFilter.getFilter(task.positive, task.negative), + errorFilter: this.errorFilter.getFilter(), + followSymbolicLinks: this._settings.followSymbolicLinks, + fs: this._settings.fs, + stats: this._settings.stats, + throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, + transform: this.entryTransformer.getTransformer() + }; + } + _getMicromatchOptions() { + return { + dot: this._settings.dot, + matchBase: this._settings.baseNameMatch, + nobrace: !this._settings.braceExpansion, + nocase: !this._settings.caseSensitiveMatch, + noext: !this._settings.extglob, + noglobstar: !this._settings.globstar, + posix: true, + strictSlashes: false + }; } - - return parsed.file; } +exports.default = Provider; -function parseNonShell(parsed) { - if (!isWin) { - return parsed; - } - // Detect & add support for shebangs - const commandFile = detectShebang(parsed); +/***/ }), - // We don't need a shell if the command filename is an executable - const needsShell = !isExecutableRegExp.test(commandFile); +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/stream.js": +/***/ (function(module, exports, __webpack_require__) { - // If a shell is required, use cmd.exe and take care of escaping everything correctly - // Note that `forceShell` is an hidden option used only in tests - if (parsed.options.forceShell || needsShell) { - // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/` - // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument - // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called, - // we need to double escape them - const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); - - // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar) - // This is necessary otherwise it will always fail with ENOENT in those cases - parsed.command = path.normalize(parsed.command); - - // Escape command & arguments - parsed.command = escape.command(parsed.command); - parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars)); - - const shellCommand = [parsed.command].concat(parsed.args).join(' '); +"use strict"; - parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`]; - parsed.command = process.env.comspec || 'cmd.exe'; - parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = __webpack_require__("stream"); +const stream_2 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/stream.js"); +const provider_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/provider.js"); +class ProviderStream extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_2.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const source = this.api(root, task, options); + const destination = new stream_1.Readable({ objectMode: true, read: () => { } }); + source + .once('error', (error) => destination.emit('error', error)) + .on('data', (entry) => destination.emit('data', options.transform(entry))) + .once('end', () => destination.emit('end')); + destination + .once('close', () => source.destroy()); + return destination; + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); } - - return parsed; } +exports.default = ProviderStream; -function parse(command, args, options) { - // Normalize arguments, similar to nodejs - if (args && !Array.isArray(args)) { - options = args; - args = null; - } - args = args ? args.slice(0) : []; // Clone array to avoid changing the original - options = Object.assign({}, options); // Clone object to avoid changing the original +/***/ }), - // Build our parsed object - const parsed = { - command, - args, - options, - file: undefined, - original: { - command, - args, - }, - }; +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/sync.js": +/***/ (function(module, exports, __webpack_require__) { - // Delegate further parsing to shell or non-shell - return options.shell ? parsed : parseNonShell(parsed); -} +"use strict"; -module.exports = parse; +Object.defineProperty(exports, "__esModule", { value: true }); +const sync_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/sync.js"); +const provider_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/provider.js"); +class ProviderSync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new sync_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = this.api(root, task, options); + return entries.map(options.transform); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderSync; /***/ }), -/***/ "../../node_modules/cross-spawn/lib/util/escape.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/transformers/entry.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); +class EntryTransformer { + constructor(_settings) { + this._settings = _settings; + } + getTransformer() { + return (entry) => this._transform(entry); + } + _transform(entry) { + let filepath = entry.path; + if (this._settings.absolute) { + filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); + filepath = utils.path.unixify(filepath); + } + if (this._settings.markDirectories && entry.dirent.isDirectory()) { + filepath += '/'; + } + if (!this._settings.objectMode) { + return filepath; + } + return Object.assign(Object.assign({}, entry), { path: filepath }); + } +} +exports.default = EntryTransformer; -// See http://www.robvanderwoude.com/escapechars.php -const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; - -function escapeCommand(arg) { - // Escape meta chars - arg = arg.replace(metaCharsRegExp, '^$1'); - return arg; -} +/***/ }), -function escapeArgument(arg, doubleEscapeMetaChars) { - // Convert to string - arg = `${arg}`; +/***/ "../../node_modules/del/node_modules/fast-glob/out/readers/reader.js": +/***/ (function(module, exports, __webpack_require__) { - // Algorithm below is based on https://qntm.org/cmd +"use strict"; - // Sequence of backslashes followed by a double quote: - // double up all the backslashes and escape the double quote - arg = arg.replace(/(\\*)"/g, '$1$1\\"'); +Object.defineProperty(exports, "__esModule", { value: true }); +const path = __webpack_require__("path"); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); +class Reader { + constructor(_settings) { + this._settings = _settings; + this._fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this._settings.followSymbolicLinks, + fs: this._settings.fs, + throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks + }); + } + _getFullEntryPath(filepath) { + return path.resolve(this._settings.cwd, filepath); + } + _makeEntry(stats, pattern) { + const entry = { + name: pattern, + path: pattern, + dirent: utils.fs.createDirentFromStats(pattern, stats) + }; + if (this._settings.stats) { + entry.stats = stats; + } + return entry; + } + _isFatalError(error) { + return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors; + } +} +exports.default = Reader; - // Sequence of backslashes followed by the end of the string - // (which will become a double quote later): - // double up all the backslashes - arg = arg.replace(/(\\*)$/, '$1$1'); - // All other backslashes occur literally +/***/ }), - // Quote the whole thing: - arg = `"${arg}"`; +/***/ "../../node_modules/del/node_modules/fast-glob/out/readers/stream.js": +/***/ (function(module, exports, __webpack_require__) { - // Escape meta chars - arg = arg.replace(metaCharsRegExp, '^$1'); +"use strict"; - // Double escape meta chars if necessary - if (doubleEscapeMetaChars) { - arg = arg.replace(metaCharsRegExp, '^$1'); +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = __webpack_require__("stream"); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const fsWalk = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/index.js"); +const reader_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/reader.js"); +class ReaderStream extends reader_1.default { + constructor() { + super(...arguments); + this._walkStream = fsWalk.walkStream; + this._stat = fsStat.stat; + } + dynamic(root, options) { + return this._walkStream(root, options); + } + static(patterns, options) { + const filepaths = patterns.map(this._getFullEntryPath, this); + const stream = new stream_1.PassThrough({ objectMode: true }); + stream._write = (index, _enc, done) => { + return this._getEntry(filepaths[index], patterns[index], options) + .then((entry) => { + if (entry !== null && options.entryFilter(entry)) { + stream.push(entry); + } + if (index === filepaths.length - 1) { + stream.end(); + } + done(); + }) + .catch(done); + }; + for (let i = 0; i < filepaths.length; i++) { + stream.write(i); + } + return stream; + } + _getEntry(filepath, pattern, options) { + return this._getStat(filepath) + .then((stats) => this._makeEntry(stats, pattern)) + .catch((error) => { + if (options.errorFilter(error)) { + return null; + } + throw error; + }); + } + _getStat(filepath) { + return new Promise((resolve, reject) => { + this._stat(filepath, this._fsStatSettings, (error, stats) => { + return error === null ? resolve(stats) : reject(error); + }); + }); } - - return arg; } - -module.exports.command = escapeCommand; -module.exports.argument = escapeArgument; +exports.default = ReaderStream; /***/ }), -/***/ "../../node_modules/cross-spawn/lib/util/readShebang.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/readers/sync.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const fsWalk = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/index.js"); +const reader_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/reader.js"); +class ReaderSync extends reader_1.default { + constructor() { + super(...arguments); + this._walkSync = fsWalk.walkSync; + this._statSync = fsStat.statSync; + } + dynamic(root, options) { + return this._walkSync(root, options); + } + static(patterns, options) { + const entries = []; + for (const pattern of patterns) { + const filepath = this._getFullEntryPath(pattern); + const entry = this._getEntry(filepath, pattern, options); + if (entry === null || !options.entryFilter(entry)) { + continue; + } + entries.push(entry); + } + return entries; + } + _getEntry(filepath, pattern, options) { + try { + const stats = this._getStat(filepath); + return this._makeEntry(stats, pattern); + } + catch (error) { + if (options.errorFilter(error)) { + return null; + } + throw error; + } + } + _getStat(filepath) { + return this._statSync(filepath, this._fsStatSettings); + } +} +exports.default = ReaderSync; -const fs = __webpack_require__("fs"); -const shebangCommand = __webpack_require__("../../node_modules/shebang-command/index.js"); -function readShebang(command) { - // Read the first 150 bytes from the file - const size = 150; - const buffer = Buffer.alloc(size); +/***/ }), - let fd; +/***/ "../../node_modules/del/node_modules/fast-glob/out/settings.js": +/***/ (function(module, exports, __webpack_require__) { - try { - fd = fs.openSync(command, 'r'); - fs.readSync(fd, buffer, 0, size, 0); - fs.closeSync(fd); - } catch (e) { /* Empty */ } +"use strict"; - // Attempt to extract shebang (null is returned if not a shebang) - return shebangCommand(buffer.toString()); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; +const fs = __webpack_require__("fs"); +const os = __webpack_require__("os"); +/** + * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. + * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 + */ +const CPU_COUNT = Math.max(os.cpus().length, 1); +exports.DEFAULT_FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + lstatSync: fs.lstatSync, + stat: fs.stat, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync +}; +class Settings { + constructor(_options = {}) { + this._options = _options; + this.absolute = this._getValue(this._options.absolute, false); + this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); + this.braceExpansion = this._getValue(this._options.braceExpansion, true); + this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); + this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); + this.cwd = this._getValue(this._options.cwd, process.cwd()); + this.deep = this._getValue(this._options.deep, Infinity); + this.dot = this._getValue(this._options.dot, false); + this.extglob = this._getValue(this._options.extglob, true); + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); + this.fs = this._getFileSystemMethods(this._options.fs); + this.globstar = this._getValue(this._options.globstar, true); + this.ignore = this._getValue(this._options.ignore, []); + this.markDirectories = this._getValue(this._options.markDirectories, false); + this.objectMode = this._getValue(this._options.objectMode, false); + this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); + this.onlyFiles = this._getValue(this._options.onlyFiles, true); + this.stats = this._getValue(this._options.stats, false); + this.suppressErrors = this._getValue(this._options.suppressErrors, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); + this.unique = this._getValue(this._options.unique, true); + if (this.onlyDirectories) { + this.onlyFiles = false; + } + if (this.stats) { + this.objectMode = true; + } + } + _getValue(option, value) { + return option === undefined ? value : option; + } + _getFileSystemMethods(methods = {}) { + return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); + } } - -module.exports = readShebang; +exports.default = Settings; /***/ }), -/***/ "../../node_modules/cross-spawn/lib/util/resolveCommand.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/array.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -const path = __webpack_require__("path"); -const which = __webpack_require__("../../node_modules/which/which.js"); -const getPathKey = __webpack_require__("../../node_modules/cross-spawn/node_modules/path-key/index.js"); - -function resolveCommandAttempt(parsed, withoutPathExt) { - const env = parsed.options.env || process.env; - const cwd = process.cwd(); - const hasCustomCwd = parsed.options.cwd != null; - // Worker threads do not have process.chdir() - const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled; - - // If a custom `cwd` was specified, we need to change the process cwd - // because `which` will do stat calls but does not support a custom cwd - if (shouldSwitchCwd) { - try { - process.chdir(parsed.options.cwd); - } catch (err) { - /* Empty */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitWhen = exports.flatten = void 0; +function flatten(items) { + return items.reduce((collection, item) => [].concat(collection, item), []); +} +exports.flatten = flatten; +function splitWhen(items, predicate) { + const result = [[]]; + let groupIndex = 0; + for (const item of items) { + if (predicate(item)) { + groupIndex++; + result[groupIndex] = []; + } + else { + result[groupIndex].push(item); } } + return result; +} +exports.splitWhen = splitWhen; - let resolved; - try { - resolved = which.sync(parsed.command, { - path: env[getPathKey({ env })], - pathExt: withoutPathExt ? path.delimiter : undefined, - }); - } catch (e) { - /* Empty */ - } finally { - if (shouldSwitchCwd) { - process.chdir(cwd); - } - } +/***/ }), - // If we successfully resolved, ensure that an absolute path is returned - // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it - if (resolved) { - resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved); - } +/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/errno.js": +/***/ (function(module, exports, __webpack_require__) { - return resolved; -} +"use strict"; -function resolveCommand(parsed) { - return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEnoentCodeError = void 0; +function isEnoentCodeError(error) { + return error.code === 'ENOENT'; } - -module.exports = resolveCommand; +exports.isEnoentCodeError = isEnoentCodeError; /***/ }), -/***/ "../../node_modules/cross-spawn/node_modules/path-key/index.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/fs.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDirentFromStats = void 0; +class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } +} +function createDirentFromStats(name, stats) { + return new DirentFromStats(name, stats); +} +exports.createDirentFromStats = createDirentFromStats; + -const pathKey = (options = {}) => { - const environment = options.env || process.env; - const platform = options.platform || process.platform; +/***/ }), - if (platform !== 'win32') { - return 'PATH'; - } +/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/index.js": +/***/ (function(module, exports, __webpack_require__) { - return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path'; -}; +"use strict"; -module.exports = pathKey; -// TODO: Remove this for the next major release -module.exports.default = pathKey; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; +const array = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/array.js"); +exports.array = array; +const errno = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/errno.js"); +exports.errno = errno; +const fs = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/fs.js"); +exports.fs = fs; +const path = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/path.js"); +exports.path = path; +const pattern = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/pattern.js"); +exports.pattern = pattern; +const stream = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/stream.js"); +exports.stream = stream; +const string = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/string.js"); +exports.string = string; /***/ }), -/***/ "../../node_modules/debug/node_modules/ms/index.js": -/***/ (function(module, exports) { - -/** - * Helpers. - */ +/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/path.js": +/***/ (function(module, exports, __webpack_require__) { -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0; +const path = __webpack_require__("path"); +const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\ +const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g; /** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @param {String|Number} val - * @param {Object} [options] - * @throws {Error} throw an error if val is not a non-empty string or a number - * @return {String|Number} - * @api public + * Designed to work only with simple paths: `dir\\file`. */ +function unixify(filepath) { + return filepath.replace(/\\/g, '/'); +} +exports.unixify = unixify; +function makeAbsolute(cwd, filepath) { + return path.resolve(cwd, filepath); +} +exports.makeAbsolute = makeAbsolute; +function escape(pattern) { + return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); +} +exports.escape = escape; +function removeLeadingDotSegment(entry) { + // We do not use `startsWith` because this is 10x slower than current implementation for some cases. + // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with + if (entry.charAt(0) === '.') { + const secondCharactery = entry.charAt(1); + if (secondCharactery === '/' || secondCharactery === '\\') { + return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); + } + } + return entry; +} +exports.removeLeadingDotSegment = removeLeadingDotSegment; -module.exports = function(val, options) { - options = options || {}; - var type = typeof val; - if (type === 'string' && val.length > 0) { - return parse(val); - } else if (type === 'number' && isNaN(val) === false) { - return options.long ? fmtLong(val) : fmtShort(val); - } - throw new Error( - 'val is not a non-empty string or a valid number. val=' + - JSON.stringify(val) - ); -}; -/** - * Parse the given `str` and return milliseconds. - * - * @param {String} str - * @return {Number} - * @api private - */ +/***/ }), -function parse(str) { - str = String(str); - if (str.length > 100) { - return; - } - var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( - str - ); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'yrs': - case 'yr': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'hrs': - case 'hr': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'mins': - case 'min': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 'secs': - case 'sec': - case 's': - return n * s; - case 'milliseconds': - case 'millisecond': - case 'msecs': - case 'msec': - case 'ms': - return n; - default: - return undefined; - } -} +/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/pattern.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Short format for `ms`. - * - * @param {Number} ms - * @return {String} - * @api private - */ +"use strict"; -function fmtShort(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; +const path = __webpack_require__("path"); +const globParent = __webpack_require__("../../node_modules/glob-parent/index.js"); +const micromatch = __webpack_require__("../../node_modules/del/node_modules/micromatch/index.js"); +const GLOBSTAR = '**'; +const ESCAPE_SYMBOL = '\\'; +const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; +const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[.*]/; +const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\(.*\|.*\)/; +const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\(.*\)/; +const BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\.\.).*}/; +function isStaticPattern(pattern, options = {}) { + return !isDynamicPattern(pattern, options); } - +exports.isStaticPattern = isStaticPattern; +function isDynamicPattern(pattern, options = {}) { + /** + * A special case with an empty string is necessary for matching patterns that start with a forward slash. + * An empty string cannot be a dynamic pattern. + * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'. + */ + if (pattern === '') { + return false; + } + /** + * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check + * filepath directly (without read directory). + */ + if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { + return true; + } + if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) { + return true; + } + return false; +} +exports.isDynamicPattern = isDynamicPattern; +function convertToPositivePattern(pattern) { + return isNegativePattern(pattern) ? pattern.slice(1) : pattern; +} +exports.convertToPositivePattern = convertToPositivePattern; +function convertToNegativePattern(pattern) { + return '!' + pattern; +} +exports.convertToNegativePattern = convertToNegativePattern; +function isNegativePattern(pattern) { + return pattern.startsWith('!') && pattern[1] !== '('; +} +exports.isNegativePattern = isNegativePattern; +function isPositivePattern(pattern) { + return !isNegativePattern(pattern); +} +exports.isPositivePattern = isPositivePattern; +function getNegativePatterns(patterns) { + return patterns.filter(isNegativePattern); +} +exports.getNegativePatterns = getNegativePatterns; +function getPositivePatterns(patterns) { + return patterns.filter(isPositivePattern); +} +exports.getPositivePatterns = getPositivePatterns; /** - * Long format for `ms`. + * Returns patterns that can be applied inside the current directory. * - * @param {Number} ms - * @return {String} - * @api private + * @example + * // ['./*', '*', 'a/*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) */ - -function fmtLong(ms) { - return plural(ms, d, 'day') || - plural(ms, h, 'hour') || - plural(ms, m, 'minute') || - plural(ms, s, 'second') || - ms + ' ms'; +function getPatternsInsideCurrentDirectory(patterns) { + return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); } - +exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; /** - * Pluralization helper. + * Returns patterns to be expanded relative to (outside) the current directory. + * + * @example + * // ['../*', './../*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) */ - -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; +function getPatternsOutsideCurrentDirectory(patterns) { + return patterns.filter(isPatternRelatedToParentDirectory); +} +exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; +function isPatternRelatedToParentDirectory(pattern) { + return pattern.startsWith('..') || pattern.startsWith('./..'); +} +exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; +function getBaseDirectory(pattern) { + return globParent(pattern, { flipBackslashes: false }); +} +exports.getBaseDirectory = getBaseDirectory; +function hasGlobStar(pattern) { + return pattern.includes(GLOBSTAR); +} +exports.hasGlobStar = hasGlobStar; +function endsWithSlashGlobStar(pattern) { + return pattern.endsWith('/' + GLOBSTAR); +} +exports.endsWithSlashGlobStar = endsWithSlashGlobStar; +function isAffectDepthOfReadingPattern(pattern) { + const basename = path.basename(pattern); + return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); +} +exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; +function expandPatternsWithBraceExpansion(patterns) { + return patterns.reduce((collection, pattern) => { + return collection.concat(expandBraceExpansion(pattern)); + }, []); +} +exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; +function expandBraceExpansion(pattern) { + return micromatch.braces(pattern, { + expand: true, + nodupes: true + }); +} +exports.expandBraceExpansion = expandBraceExpansion; +function getPatternParts(pattern, options) { + let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); + /** + * The scan method returns an empty array in some cases. + * See micromatch/picomatch#58 for more details. + */ + if (parts.length === 0) { + parts = [pattern]; + } + /** + * The scan method does not return an empty part for the pattern with a forward slash. + * This is another part of micromatch/picomatch#58. + */ + if (parts[0].startsWith('/')) { + parts[0] = parts[0].slice(1); + parts.unshift(''); + } + return parts; +} +exports.getPatternParts = getPatternParts; +function makeRe(pattern, options) { + return micromatch.makeRe(pattern, options); +} +exports.makeRe = makeRe; +function convertPatternsToRe(patterns, options) { + return patterns.map((pattern) => makeRe(pattern, options)); +} +exports.convertPatternsToRe = convertPatternsToRe; +function matchAny(entry, patternsRe) { + return patternsRe.some((patternRe) => patternRe.test(entry)); } +exports.matchAny = matchAny; /***/ }), -/***/ "../../node_modules/debug/src/browser.js": +/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/stream.js": /***/ (function(module, exports, __webpack_require__) { -/** - * This is the web browser implementation of `debug()`. - * - * Expose `debug()` as the module. - */ +"use strict"; -exports = module.exports = __webpack_require__("../../node_modules/debug/src/debug.js"); -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; -exports.storage = 'undefined' != typeof chrome - && 'undefined' != typeof chrome.storage - ? chrome.storage.local - : localstorage(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.merge = void 0; +const merge2 = __webpack_require__("../../node_modules/merge2/index.js"); +function merge(streams) { + const mergedStream = merge2(streams); + streams.forEach((stream) => { + stream.once('error', (error) => mergedStream.emit('error', error)); + }); + mergedStream.once('close', () => propagateCloseEventToSources(streams)); + mergedStream.once('end', () => propagateCloseEventToSources(streams)); + return mergedStream; +} +exports.merge = merge; +function propagateCloseEventToSources(streams) { + streams.forEach((stream) => stream.emit('close')); +} -/** - * Colors. - */ -exports.colors = [ - 'lightseagreen', - 'forestgreen', - 'goldenrod', - 'dodgerblue', - 'darkorchid', - 'crimson' -]; +/***/ }), -/** - * Currently only WebKit-based Web Inspectors, Firefox >= v31, - * and the Firebug extension (any Firefox version) are known - * to support "%c" CSS customizations. - * - * TODO: add a `localStorage` variable to explicitly enable/disable colors - */ +/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/string.js": +/***/ (function(module, exports, __webpack_require__) { -function useColors() { - // NB: In an Electron preload script, document will be defined but not fully - // initialized. Since we know we're in Chrome, we'll just detect this case - // explicitly - if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { - return true; - } +"use strict"; - // is webkit? http://stackoverflow.com/a/16459606/376773 - // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 - return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || - // is firebug? http://stackoverflow.com/a/398120/376773 - (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || - // is firefox >= v31? - // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || - // double check webkit in userAgent just in case we are in a worker - (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEmpty = exports.isString = void 0; +function isString(input) { + return typeof input === 'string'; +} +exports.isString = isString; +function isEmpty(input) { + return input === ''; } +exports.isEmpty = isEmpty; -/** - * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. - */ -exports.formatters.j = function(v) { - try { - return JSON.stringify(v); - } catch (err) { - return '[UnexpectedJSONParseError]: ' + err.message; - } -}; +/***/ }), +/***/ "../../node_modules/del/node_modules/globby/gitignore.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Colorize log arguments if enabled. - * - * @api public - */ +"use strict"; -function formatArgs(args) { - var useColors = this.useColors; +const {promisify} = __webpack_require__("util"); +const fs = __webpack_require__("fs"); +const path = __webpack_require__("path"); +const fastGlob = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/index.js"); +const gitIgnore = __webpack_require__("../../node_modules/ignore/index.js"); +const slash = __webpack_require__("../../node_modules/slash/index.js"); - args[0] = (useColors ? '%c' : '') - + this.namespace - + (useColors ? ' %c' : ' ') - + args[0] - + (useColors ? '%c ' : ' ') - + '+' + exports.humanize(this.diff); +const DEFAULT_IGNORE = [ + '**/node_modules/**', + '**/flow-typed/**', + '**/coverage/**', + '**/.git' +]; - if (!useColors) return; +const readFileP = promisify(fs.readFile); - var c = 'color: ' + this.color; - args.splice(1, 0, c, 'color: inherit') +const mapGitIgnorePatternTo = base => ignore => { + if (ignore.startsWith('!')) { + return '!' + path.posix.join(base, ignore.slice(1)); + } - // the final "%c" is somewhat tricky, because there could be other - // arguments passed either before or after the %c, so we need to - // figure out the correct index to insert the CSS into - var index = 0; - var lastC = 0; - args[0].replace(/%[a-zA-Z%]/g, function(match) { - if ('%%' === match) return; - index++; - if ('%c' === match) { - // we only are interested in the *last* %c - // (the user may have provided their own) - lastC = index; - } - }); + return path.posix.join(base, ignore); +}; - args.splice(lastC, 0, c); -} +const parseGitIgnore = (content, options) => { + const base = slash(path.relative(options.cwd, path.dirname(options.fileName))); -/** - * Invokes `console.log()` when available. - * No-op when `console.log` is not a "function". - * - * @api public - */ + return content + .split(/\r?\n/) + .filter(Boolean) + .filter(line => !line.startsWith('#')) + .map(mapGitIgnorePatternTo(base)); +}; -function log() { - // this hackery is required for IE8/9, where - // the `console.log` function doesn't have 'apply' - return 'object' === typeof console - && console.log - && Function.prototype.apply.call(console.log, console, arguments); -} +const reduceIgnore = files => { + return files.reduce((ignores, file) => { + ignores.add(parseGitIgnore(file.content, { + cwd: file.cwd, + fileName: file.filePath + })); + return ignores; + }, gitIgnore()); +}; -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ +const ensureAbsolutePathForCwd = (cwd, p) => { + if (path.isAbsolute(p)) { + if (p.startsWith(cwd)) { + return p; + } -function save(namespaces) { - try { - if (null == namespaces) { - exports.storage.removeItem('debug'); - } else { - exports.storage.debug = namespaces; - } - } catch(e) {} -} + throw new Error(`Path ${p} is not in cwd ${cwd}`); + } -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ + return path.join(cwd, p); +}; -function load() { - var r; - try { - r = exports.storage.debug; - } catch(e) {} +const getIsIgnoredPredecate = (ignores, cwd) => { + return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p)))); +}; - // If debug isn't set in LS, and we're in Electron, try to load $DEBUG - if (!r && typeof process !== 'undefined' && 'env' in process) { - r = process.env.DEBUG; - } +const getFile = async (file, cwd) => { + const filePath = path.join(cwd, file); + const content = await readFileP(filePath, 'utf8'); - return r; -} + return { + cwd, + filePath, + content + }; +}; -/** - * Enable namespaces listed in `localStorage.debug` initially. - */ +const getFileSync = (file, cwd) => { + const filePath = path.join(cwd, file); + const content = fs.readFileSync(filePath, 'utf8'); -exports.enable(load()); + return { + cwd, + filePath, + content + }; +}; -/** - * Localstorage attempts to return the localstorage. - * - * This is necessary because safari throws - * when a user disables cookies/localstorage - * and you attempt to access it. - * - * @return {LocalStorage} - * @api private - */ +const normalizeOptions = ({ + ignore = [], + cwd = slash(process.cwd()) +} = {}) => { + return {ignore, cwd}; +}; -function localstorage() { - try { - return window.localStorage; - } catch (e) {} -} +module.exports = async options => { + options = normalizeOptions(options); + const paths = await fastGlob('**/.gitignore', { + ignore: DEFAULT_IGNORE.concat(options.ignore), + cwd: options.cwd + }); -/***/ }), + const files = await Promise.all(paths.map(file => getFile(file, options.cwd))); + const ignores = reduceIgnore(files); -/***/ "../../node_modules/debug/src/debug.js": -/***/ (function(module, exports, __webpack_require__) { + return getIsIgnoredPredecate(ignores, options.cwd); +}; +module.exports.sync = options => { + options = normalizeOptions(options); -/** - * This is the common logic for both the Node.js and web browser - * implementations of `debug()`. - * - * Expose `debug()` as the module. - */ + const paths = fastGlob.sync('**/.gitignore', { + ignore: DEFAULT_IGNORE.concat(options.ignore), + cwd: options.cwd + }); -exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; -exports.coerce = coerce; -exports.disable = disable; -exports.enable = enable; -exports.enabled = enabled; -exports.humanize = __webpack_require__("../../node_modules/debug/node_modules/ms/index.js"); + const files = paths.map(file => getFileSync(file, options.cwd)); + const ignores = reduceIgnore(files); -/** - * The currently active debug mode names, and names to skip. - */ + return getIsIgnoredPredecate(ignores, options.cwd); +}; -exports.names = []; -exports.skips = []; -/** - * Map of special "%n" handling functions, for the debug "format" argument. - * - * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". - */ +/***/ }), -exports.formatters = {}; +/***/ "../../node_modules/del/node_modules/globby/index.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Previous log timestamp. - */ +"use strict"; -var prevTime; +const fs = __webpack_require__("fs"); +const arrayUnion = __webpack_require__("../../node_modules/array-union/index.js"); +const merge2 = __webpack_require__("../../node_modules/merge2/index.js"); +const glob = __webpack_require__("../../node_modules/glob/glob.js"); +const fastGlob = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/index.js"); +const dirGlob = __webpack_require__("../../node_modules/dir-glob/index.js"); +const gitignore = __webpack_require__("../../node_modules/del/node_modules/globby/gitignore.js"); +const {FilterStream, UniqueStream} = __webpack_require__("../../node_modules/del/node_modules/globby/stream-utils.js"); -/** - * Select a color. - * @param {String} namespace - * @return {Number} - * @api private - */ +const DEFAULT_FILTER = () => false; -function selectColor(namespace) { - var hash = 0, i; +const isNegative = pattern => pattern[0] === '!'; - for (i in namespace) { - hash = ((hash << 5) - hash) + namespace.charCodeAt(i); - hash |= 0; // Convert to 32bit integer - } +const assertPatternsInput = patterns => { + if (!patterns.every(pattern => typeof pattern === 'string')) { + throw new TypeError('Patterns must be a string or an array of strings'); + } +}; - return exports.colors[Math.abs(hash) % exports.colors.length]; -} +const checkCwdOption = (options = {}) => { + if (!options.cwd) { + return; + } -/** - * Create a debugger with the given `namespace`. - * - * @param {String} namespace - * @return {Function} - * @api public - */ + let stat; + try { + stat = fs.statSync(options.cwd); + } catch (_) { + return; + } -function createDebug(namespace) { + if (!stat.isDirectory()) { + throw new Error('The `cwd` option must be a path to a directory'); + } +}; - function debug() { - // disabled? - if (!debug.enabled) return; +const getPathString = p => p.stats instanceof fs.Stats ? p.path : p; - var self = debug; +const generateGlobTasks = (patterns, taskOptions) => { + patterns = arrayUnion([].concat(patterns)); + assertPatternsInput(patterns); + checkCwdOption(taskOptions); - // set `diff` timestamp - var curr = +new Date(); - var ms = curr - (prevTime || curr); - self.diff = ms; - self.prev = prevTime; - self.curr = curr; - prevTime = curr; + const globTasks = []; - // turn the `arguments` into a proper Array - var args = new Array(arguments.length); - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i]; - } + taskOptions = { + ignore: [], + expandDirectories: true, + ...taskOptions + }; - args[0] = exports.coerce(args[0]); + for (const [index, pattern] of patterns.entries()) { + if (isNegative(pattern)) { + continue; + } - if ('string' !== typeof args[0]) { - // anything else let's inspect with %O - args.unshift('%O'); - } + const ignore = patterns + .slice(index) + .filter(isNegative) + .map(pattern => pattern.slice(1)); - // apply any `formatters` transformations - var index = 0; - args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { - // if we encounter an escaped % then don't increase the array index - if (match === '%%') return match; - index++; - var formatter = exports.formatters[format]; - if ('function' === typeof formatter) { - var val = args[index]; - match = formatter.call(self, val); + const options = { + ...taskOptions, + ignore: taskOptions.ignore.concat(ignore) + }; - // now we need to remove `args[index]` since it's inlined in the `format` - args.splice(index, 1); - index--; - } - return match; - }); + globTasks.push({pattern, options}); + } - // apply env-specific formatting (colors, etc.) - exports.formatArgs.call(self, args); + return globTasks; +}; - var logFn = debug.log || exports.log || console.log.bind(console); - logFn.apply(self, args); - } +const globDirs = (task, fn) => { + let options = {}; + if (task.options.cwd) { + options.cwd = task.options.cwd; + } - debug.namespace = namespace; - debug.enabled = exports.enabled(namespace); - debug.useColors = exports.useColors(); - debug.color = selectColor(namespace); + if (Array.isArray(task.options.expandDirectories)) { + options = { + ...options, + files: task.options.expandDirectories + }; + } else if (typeof task.options.expandDirectories === 'object') { + options = { + ...options, + ...task.options.expandDirectories + }; + } - // env-specific initialization logic for debug instances - if ('function' === typeof exports.init) { - exports.init(debug); - } + return fn(task.pattern, options); +}; - return debug; -} +const getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern]; -/** - * Enables a debug mode by namespaces. This can include modes - * separated by a colon and wildcards. - * - * @param {String} namespaces - * @api public - */ +const getFilterSync = options => { + return options && options.gitignore ? + gitignore.sync({cwd: options.cwd, ignore: options.ignore}) : + DEFAULT_FILTER; +}; -function enable(namespaces) { - exports.save(namespaces); +const globToTask = task => glob => { + const {options} = task; + if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) { + options.ignore = dirGlob.sync(options.ignore); + } - exports.names = []; - exports.skips = []; + return { + pattern: glob, + options + }; +}; - var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); - var len = split.length; +module.exports = async (patterns, options) => { + const globTasks = generateGlobTasks(patterns, options); - for (var i = 0; i < len; i++) { - if (!split[i]) continue; // ignore empty strings - namespaces = split[i].replace(/\*/g, '.*?'); - if (namespaces[0] === '-') { - exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); - } else { - exports.names.push(new RegExp('^' + namespaces + '$')); - } - } -} + const getFilter = async () => { + return options && options.gitignore ? + gitignore({cwd: options.cwd, ignore: options.ignore}) : + DEFAULT_FILTER; + }; -/** - * Disable debug output. - * - * @api public - */ + const getTasks = async () => { + const tasks = await Promise.all(globTasks.map(async task => { + const globs = await getPattern(task, dirGlob); + return Promise.all(globs.map(globToTask(task))); + })); -function disable() { - exports.enable(''); -} + return arrayUnion(...tasks); + }; -/** - * Returns true if the given mode name is enabled, false otherwise. - * - * @param {String} name - * @return {Boolean} - * @api public - */ + const [filter, tasks] = await Promise.all([getFilter(), getTasks()]); + const paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options))); -function enabled(name) { - var i, len; - for (i = 0, len = exports.skips.length; i < len; i++) { - if (exports.skips[i].test(name)) { - return false; - } - } - for (i = 0, len = exports.names.length; i < len; i++) { - if (exports.names[i].test(name)) { - return true; - } - } - return false; -} + return arrayUnion(...paths).filter(path_ => !filter(getPathString(path_))); +}; -/** - * Coerce `val`. - * - * @param {Mixed} val - * @return {Mixed} - * @api private - */ +module.exports.sync = (patterns, options) => { + const globTasks = generateGlobTasks(patterns, options); -function coerce(val) { - if (val instanceof Error) return val.stack || val.message; - return val; -} + const tasks = globTasks.reduce((tasks, task) => { + const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); + return tasks.concat(newTask); + }, []); + const filter = getFilterSync(options); -/***/ }), + return tasks.reduce( + (matches, task) => arrayUnion(matches, fastGlob.sync(task.pattern, task.options)), + [] + ).filter(path_ => !filter(path_)); +}; -/***/ "../../node_modules/debug/src/index.js": -/***/ (function(module, exports, __webpack_require__) { +module.exports.stream = (patterns, options) => { + const globTasks = generateGlobTasks(patterns, options); -/** - * Detect Electron renderer process, which is node, but we should - * treat as a browser. - */ + const tasks = globTasks.reduce((tasks, task) => { + const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); + return tasks.concat(newTask); + }, []); -if (typeof process !== 'undefined' && process.type === 'renderer') { - module.exports = __webpack_require__("../../node_modules/debug/src/browser.js"); -} else { - module.exports = __webpack_require__("../../node_modules/debug/src/node.js"); -} + const filter = getFilterSync(options); + const filterStream = new FilterStream(p => !filter(p)); + const uniqueStream = new UniqueStream(); + return merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options))) + .pipe(filterStream) + .pipe(uniqueStream); +}; -/***/ }), +module.exports.generateGlobTasks = generateGlobTasks; -/***/ "../../node_modules/debug/src/node.js": -/***/ (function(module, exports, __webpack_require__) { +module.exports.hasMagic = (patterns, options) => [] + .concat(patterns) + .some(pattern => glob.hasMagic(pattern, options)); -/** - * Module dependencies. - */ +module.exports.gitignore = gitignore; -var tty = __webpack_require__("tty"); -var util = __webpack_require__("util"); -/** - * This is the Node.js implementation of `debug()`. - * - * Expose `debug()` as the module. - */ +/***/ }), -exports = module.exports = __webpack_require__("../../node_modules/debug/src/debug.js"); -exports.init = init; -exports.log = log; -exports.formatArgs = formatArgs; -exports.save = save; -exports.load = load; -exports.useColors = useColors; +/***/ "../../node_modules/del/node_modules/globby/stream-utils.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Colors. - */ +"use strict"; -exports.colors = [6, 2, 3, 4, 5, 1]; +const {Transform} = __webpack_require__("stream"); -/** - * Build up the default `inspectOpts` object from the environment variables. - * - * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js - */ +class ObjectTransform extends Transform { + constructor() { + super({ + objectMode: true + }); + } +} -exports.inspectOpts = Object.keys(process.env).filter(function (key) { - return /^debug_/i.test(key); -}).reduce(function (obj, key) { - // camel-case - var prop = key - .substring(6) - .toLowerCase() - .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); +class FilterStream extends ObjectTransform { + constructor(filter) { + super(); + this._filter = filter; + } - // coerce string value into JS value - var val = process.env[key]; - if (/^(yes|on|true|enabled)$/i.test(val)) val = true; - else if (/^(no|off|false|disabled)$/i.test(val)) val = false; - else if (val === 'null') val = null; - else val = Number(val); + _transform(data, encoding, callback) { + if (this._filter(data)) { + this.push(data); + } - obj[prop] = val; - return obj; -}, {}); + callback(); + } +} -/** - * The file descriptor to write the `debug()` calls to. - * Set the `DEBUG_FD` env variable to override with another value. i.e.: - * - * $ DEBUG_FD=3 node script.js 3>debug.log - */ +class UniqueStream extends ObjectTransform { + constructor() { + super(); + this._pushed = new Set(); + } -var fd = parseInt(process.env.DEBUG_FD, 10) || 2; + _transform(data, encoding, callback) { + if (!this._pushed.has(data)) { + this.push(data); + this._pushed.add(data); + } -if (1 !== fd && 2 !== fd) { - util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() + callback(); + } } -var stream = 1 === fd ? process.stdout : - 2 === fd ? process.stderr : - createWritableStdioStream(fd); +module.exports = { + FilterStream, + UniqueStream +}; -/** - * Is stdout a TTY? Colored output is enabled when `true`. - */ -function useColors() { - return 'colors' in exports.inspectOpts - ? Boolean(exports.inspectOpts.colors) - : tty.isatty(fd); -} +/***/ }), -/** - * Map %o to `util.inspect()`, all on a single line. - */ - -exports.formatters.o = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts) - .split('\n').map(function(str) { - return str.trim() - }).join(' '); -}; - -/** - * Map %o to `util.inspect()`, allowing multiple lines if needed. - */ - -exports.formatters.O = function(v) { - this.inspectOpts.colors = this.useColors; - return util.inspect(v, this.inspectOpts); -}; - -/** - * Adds ANSI color escape codes if enabled. - * - * @api public - */ - -function formatArgs(args) { - var name = this.namespace; - var useColors = this.useColors; - - if (useColors) { - var c = this.color; - var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; - - args[0] = prefix + args[0].split('\n').join('\n' + prefix); - args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); - } else { - args[0] = new Date().toUTCString() - + ' ' + name + ' ' + args[0]; - } -} - -/** - * Invokes `util.format()` with the specified arguments and writes to `stream`. - */ - -function log() { - return stream.write(util.format.apply(util, arguments) + '\n'); -} - -/** - * Save `namespaces`. - * - * @param {String} namespaces - * @api private - */ - -function save(namespaces) { - if (null == namespaces) { - // If you set a process.env field to null or undefined, it gets cast to the - // string 'null' or 'undefined'. Just delete instead. - delete process.env.DEBUG; - } else { - process.env.DEBUG = namespaces; - } -} - -/** - * Load `namespaces`. - * - * @return {String} returns the previously persisted debug modes - * @api private - */ - -function load() { - return process.env.DEBUG; -} - -/** - * Copied from `node/src/node.js`. - * - * XXX: It's lame that node doesn't expose this API out-of-the-box. It also - * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. - */ - -function createWritableStdioStream (fd) { - var stream; - var tty_wrap = process.binding('tty_wrap'); - - // Note stream._type is used for test-module-load-list.js - - switch (tty_wrap.guessHandleType(fd)) { - case 'TTY': - stream = new tty.WriteStream(fd); - stream._type = 'tty'; - - // Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - case 'FILE': - var fs = __webpack_require__("fs"); - stream = new fs.SyncWriteStream(fd, { autoClose: false }); - stream._type = 'fs'; - break; - - case 'PIPE': - case 'TCP': - var net = __webpack_require__("net"); - stream = new net.Socket({ - fd: fd, - readable: false, - writable: true - }); - - // FIXME Should probably have an option in net.Socket to create a - // stream from an existing fd which is writable only. But for now - // we'll just add this hack and set the `readable` member to false. - // Test: ./node test/fixtures/echo.js < /etc/passwd - stream.readable = false; - stream.read = null; - stream._type = 'pipe'; - - // FIXME Hack to have stream not keep the event loop alive. - // See https://github.com/joyent/node/issues/1726 - if (stream._handle && stream._handle.unref) { - stream._handle.unref(); - } - break; - - default: - // Probably an error on in uv_guess_handle() - throw new Error('Implement me. Unknown stream file type!'); - } - - // For supporting legacy API we put the FD here. - stream.fd = fd; - - stream._isStdio = true; - - return stream; -} - -/** - * Init logic for `debug` instances. - * - * Create a new `inspectOpts` object in case `useColors` is set - * differently for a particular `debug` instance. - */ - -function init (debug) { - debug.inspectOpts = {}; - - var keys = Object.keys(exports.inspectOpts); - for (var i = 0; i < keys.length; i++) { - debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; - } -} - -/** - * Enable namespaces listed in `process.env.DEBUG` initially. - */ - -exports.enable(load()); - - -/***/ }), - -/***/ "../../node_modules/decode-uri-component/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/del/node_modules/indent-string/index.js": +/***/ (function(module, exports, __webpack_require__) { "use strict"; -var token = '%[a-f0-9]{2}'; -var singleMatcher = new RegExp(token, 'gi'); -var multiMatcher = new RegExp('(' + token + ')+', 'gi'); - -function decodeComponents(components, split) { - try { - // Try to decode the entire string first - return decodeURIComponent(components.join('')); - } catch (err) { - // Do nothing - } - - if (components.length === 1) { - return components; - } - - split = split || 1; - - // Split the array in 2 parts - var left = components.slice(0, split); - var right = components.slice(split); - - return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right)); -} - -function decode(input) { - try { - return decodeURIComponent(input); - } catch (err) { - var tokens = input.match(singleMatcher); - - for (var i = 1; i < tokens.length; i++) { - input = decodeComponents(tokens, i).join(''); - - tokens = input.match(singleMatcher); - } - - return input; - } -} -function customDecodeURIComponent(input) { - // Keep track of all the replacements and prefill the map with the `BOM` - var replaceMap = { - '%FE%FF': '\uFFFD\uFFFD', - '%FF%FE': '\uFFFD\uFFFD' +module.exports = (string, count = 1, options) => { + options = { + indent: ' ', + includeEmptyLines: false, + ...options }; - var match = multiMatcher.exec(input); - while (match) { - try { - // Decode as big chunks as possible - replaceMap[match[0]] = decodeURIComponent(match[0]); - } catch (err) { - var result = decode(match[0]); - - if (result !== match[0]) { - replaceMap[match[0]] = result; - } - } - - match = multiMatcher.exec(input); + if (typeof string !== 'string') { + throw new TypeError( + `Expected \`input\` to be a \`string\`, got \`${typeof string}\`` + ); } - // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else - replaceMap['%C2'] = '\uFFFD'; - - var entries = Object.keys(replaceMap); - - for (var i = 0; i < entries.length; i++) { - // Replace all decoded components - var key = entries[i]; - input = input.replace(new RegExp(key, 'g'), replaceMap[key]); + if (typeof count !== 'number') { + throw new TypeError( + `Expected \`count\` to be a \`number\`, got \`${typeof count}\`` + ); } - return input; -} + if (typeof options.indent !== 'string') { + throw new TypeError( + `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\`` + ); + } -module.exports = function (encodedURI) { - if (typeof encodedURI !== 'string') { - throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`'); + if (count === 0) { + return string; } - try { - encodedURI = encodedURI.replace(/\+/g, ' '); + const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm; - // Try the built in decoder first - return decodeURIComponent(encodedURI); - } catch (err) { - // Fallback to a more advanced decoder - return customDecodeURIComponent(encodedURI); - } + return string.replace(regex, options.indent.repeat(count)); }; /***/ }), -/***/ "../../node_modules/dedent/dist/dedent.js": +/***/ "../../node_modules/del/node_modules/micromatch/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -function dedent(strings) { +const util = __webpack_require__("util"); +const braces = __webpack_require__("../../node_modules/braces/index.js"); +const picomatch = __webpack_require__("../../node_modules/picomatch/index.js"); +const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); +const isEmptyString = val => val === '' || val === './'; - var raw = void 0; - if (typeof strings === "string") { - // dedent can be used as a plain function - raw = [strings]; - } else { - raw = strings.raw; - } +/** + * Returns an array of strings that match one or more glob patterns. + * + * ```js + * const mm = require('micromatch'); + * // mm(list, patterns[, options]); + * + * console.log(mm(['a.js', 'a.txt'], ['*.js'])); + * //=> [ 'a.js' ] + * ``` + * @param {String|Array} `list` List of strings to match. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) + * @return {Array} Returns an array of matches + * @summary false + * @api public + */ - // first, perform interpolation - var result = ""; - for (var i = 0; i < raw.length; i++) { - result += raw[i]. - // join lines when there is a suppressed newline - replace(/\\\n[ \t]*/g, ""). +const micromatch = (list, patterns, options) => { + patterns = [].concat(patterns); + list = [].concat(list); - // handle escaped backticks - replace(/\\`/g, "`"); + let omit = new Set(); + let keep = new Set(); + let items = new Set(); + let negatives = 0; - if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) { - result += arguments.length <= i + 1 ? undefined : arguments[i + 1]; + let onResult = state => { + items.add(state.output); + if (options && options.onResult) { + options.onResult(state); } - } + }; - // now strip indentation - var lines = result.split("\n"); - var mindent = null; - lines.forEach(function (l) { - var m = l.match(/^(\s+)\S+/); - if (m) { - var indent = m[1].length; - if (!mindent) { - // this is the first indented line - mindent = indent; + for (let i = 0; i < patterns.length; i++) { + let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); + let negated = isMatch.state.negated || isMatch.state.negatedExtglob; + if (negated) negatives++; + + for (let item of list) { + let matched = isMatch(item, true); + + let match = negated ? !matched.isMatch : matched.isMatch; + if (!match) continue; + + if (negated) { + omit.add(matched.output); } else { - mindent = Math.min(mindent, indent); + omit.delete(matched.output); + keep.add(matched.output); } } - }); - - if (mindent !== null) { - result = lines.map(function (l) { - return l[0] === " " ? l.slice(mindent) : l; - }).join("\n"); } - // dedent eats leading and trailing whitespace too - result = result.trim(); - - // handle escaped newlines at the end to ensure they don't get stripped too - return result.replace(/\\n/g, "\n"); -} - -if (true) { - module.exports = dedent; -} - - -/***/ }), - -/***/ "../../node_modules/defaults/index.js": -/***/ (function(module, exports, __webpack_require__) { - -var clone = __webpack_require__("../../node_modules/clone/clone.js"); + let result = negatives === patterns.length ? [...items] : [...keep]; + let matches = result.filter(item => !omit.has(item)); -module.exports = function(options, defaults) { - options = options || {}; + if (options && matches.length === 0) { + if (options.failglob === true) { + throw new Error(`No matches found for "${patterns.join(', ')}"`); + } - Object.keys(defaults).forEach(function(key) { - if (typeof options[key] === 'undefined') { - options[key] = clone(defaults[key]); + if (options.nonull === true || options.nullglob === true) { + return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns; } - }); + } - return options; + return matches; }; -/***/ }), +/** + * Backwards compatibility + */ -/***/ "../../node_modules/define-property/index.js": -/***/ (function(module, exports, __webpack_require__) { +micromatch.match = micromatch; -"use strict"; -/*! - * define-property +/** + * Returns a matcher function from the given glob `pattern` and `options`. + * The returned function takes a string to match as its only argument and returns + * true if the string is a match. * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. + * ```js + * const mm = require('micromatch'); + * // mm.matcher(pattern[, options]); + * + * const isMatch = mm.matcher('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @param {String} `pattern` Glob pattern + * @param {Object} `options` + * @return {Function} Returns a matcher function. + * @api public */ +micromatch.matcher = (pattern, options) => picomatch(pattern, options); +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const mm = require('micromatch'); + * // mm.isMatch(string, patterns[, options]); + * + * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(mm.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `[options]` See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ -var isDescriptor = __webpack_require__("../../node_modules/define-property/node_modules/is-descriptor/index.js"); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; - +micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); -/***/ }), +/** + * Backwards compatibility + */ -/***/ "../../node_modules/define-property/node_modules/is-accessor-descriptor/index.js": -/***/ (function(module, exports, __webpack_require__) { +micromatch.any = micromatch.isMatch; -"use strict"; -/*! - * is-accessor-descriptor +/** + * Returns a list of strings that _**do not match any**_ of the given `patterns`. * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. + * ```js + * const mm = require('micromatch'); + * // mm.not(list, patterns[, options]); + * + * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); + * //=> ['b.b', 'c.c'] + * ``` + * @param {Array} `list` Array of strings to match. + * @param {String|Array} `patterns` One or more glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array} Returns an array of strings that **do not match** the given patterns. + * @api public */ +micromatch.not = (list, patterns, options = {}) => { + patterns = [].concat(patterns).map(String); + let result = new Set(); + let items = []; + let onResult = state => { + if (options.onResult) options.onResult(state); + items.push(state.output); + }; -var typeOf = __webpack_require__("../../node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js"); - -// accessor descriptor properties -var accessor = { - get: 'function', - set: 'function', - configurable: 'boolean', - enumerable: 'boolean' -}; - -function isAccessorDescriptor(obj, prop) { - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } + let matches = micromatch(list, patterns, { ...options, onResult }); - if (typeOf(obj) !== 'object') { - return false; + for (let item of items) { + if (!matches.includes(item)) { + result.add(item); + } } + return [...result]; +}; - if (has(obj, 'value') || has(obj, 'writable')) { - return false; - } +/** + * Returns true if the given `string` contains the given pattern. Similar + * to [.isMatch](#isMatch) but the pattern can match any part of the string. + * + * ```js + * var mm = require('micromatch'); + * // mm.contains(string, pattern[, options]); + * + * console.log(mm.contains('aa/bb/cc', '*b')); + * //=> true + * console.log(mm.contains('aa/bb/cc', '*d')); + * //=> false + * ``` + * @param {String} `str` The string to match. + * @param {String|Array} `patterns` Glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any of the patterns matches any part of `str`. + * @api public + */ - if (!has(obj, 'get') || typeof obj.get !== 'function') { - return false; +micromatch.contains = (str, pattern, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); } - // tldr: it's valid to have "set" be undefined - // "set" might be undefined if `Object.getOwnPropertyDescriptor` - // was used to get the value, and only `get` was defined by the user - if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { - return false; + if (Array.isArray(pattern)) { + return pattern.some(p => micromatch.contains(str, p, options)); } - for (var key in obj) { - if (!accessor.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === accessor[key]) { - continue; + if (typeof pattern === 'string') { + if (isEmptyString(str) || isEmptyString(pattern)) { + return false; } - if (typeof obj[key] !== 'undefined') { - return false; + if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) { + return true; } } - return true; -} - -function has(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} - -/** - * Expose `isAccessorDescriptor` - */ - -module.exports = isAccessorDescriptor; - - -/***/ }), - -/***/ "../../node_modules/define-property/node_modules/is-accessor-descriptor/node_modules/kind-of/index.js": -/***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__("../../node_modules/is-buffer/index.js"); -var toString = Object.prototype.toString; + return micromatch.isMatch(str, pattern, { ...options, contains: true }); +}; /** - * Get the native `typeof` a value. + * Filter the keys of the given object with the given `glob` pattern + * and `options`. Does not attempt to match nested keys. If you need this feature, + * use [glob-object][] instead. + * + * ```js + * const mm = require('micromatch'); + * // mm.matchKeys(object, patterns[, options]); * - * @param {*} `val` - * @return {*} Native javascript type + * const obj = { aa: 'a', ab: 'b', ac: 'c' }; + * console.log(mm.matchKeys(obj, '*b')); + * //=> { ab: 'b' } + * ``` + * @param {Object} `object` The object with keys to filter. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Object} Returns an object with only keys that match the given patterns. + * @api public */ -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; +micromatch.matchKeys = (obj, patterns, options) => { + if (!utils.isObject(obj)) { + throw new TypeError('Expected the first argument to be an object'); } + let keys = micromatch(Object.keys(obj), patterns, options); + let res = {}; + for (let key of keys) res[key] = obj[key]; + return res; +}; - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } +/** + * Returns true if some of the strings in the given `list` match any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.some(list, patterns[, options]); + * + * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // true + * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list` + * @api public + */ - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } +micromatch.some = (list, patterns, options) => { + let items = [].concat(list); - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (items.some(item => isMatch(item))) { + return true; + } } + return false; +}; - // other objects - var type = toString.call(val); +/** + * Returns true if every string in the given `list` matches + * any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.every(list, patterns[, options]); + * + * console.log(mm.every('foo.js', ['foo.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // false + * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list` + * @api public + */ - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } +micromatch.every = (list, patterns, options) => { + let items = [].concat(list); - // buffer - if (isBuffer(val)) { - return 'buffer'; + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (!items.every(item => isMatch(item))) { + return false; + } } + return true; +}; - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } +/** + * Returns true if **all** of the given `patterns` match + * the specified string. + * + * ```js + * const mm = require('micromatch'); + * // mm.all(string, patterns[, options]); + * + * console.log(mm.all('foo.js', ['foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); + * // false + * + * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); + * // true + * ``` + * @param {String|Array} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; +micromatch.all = (str, patterns, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); } - // must be a plain object - return 'object'; + return [].concat(patterns).every(p => picomatch(p, options)(str)); }; +/** + * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. + * + * ```js + * const mm = require('micromatch'); + * // mm.capture(pattern, string[, options]); + * + * console.log(mm.capture('test/*.js', 'test/foo.js')); + * //=> ['foo'] + * console.log(mm.capture('test/*.js', 'foo/bar.css')); + * //=> null + * ``` + * @param {String} `glob` Glob pattern to use for matching. + * @param {String} `input` String to match + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`. + * @api public + */ -/***/ }), +micromatch.capture = (glob, input, options) => { + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); + let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); -/***/ "../../node_modules/define-property/node_modules/is-data-descriptor/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (match) { + return match.slice(1).map(v => v === void 0 ? '' : v); + } +}; -"use strict"; -/*! - * is-data-descriptor +/** + * Create a regular expression from the given glob `pattern`. * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. + * ```js + * const mm = require('micromatch'); + * // mm.makeRe(pattern[, options]); + * + * console.log(mm.makeRe('*.js')); + * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ + * ``` + * @param {String} `pattern` A glob pattern to convert to regex. + * @param {Object} `options` + * @return {RegExp} Returns a regex created from the given pattern. + * @api public */ +micromatch.makeRe = (...args) => picomatch.makeRe(...args); +/** + * Scan a glob pattern to separate the pattern into segments. Used + * by the [split](#split) method. + * + * ```js + * const mm = require('micromatch'); + * const state = mm.scan(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ -var typeOf = __webpack_require__("../../node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of/index.js"); +micromatch.scan = (...args) => picomatch.scan(...args); -// data descriptor properties -var data = { - configurable: 'boolean', - enumerable: 'boolean', - writable: 'boolean' -}; +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const mm = require('micromatch'); + * const state = mm(pattern[, options]); + * ``` + * @param {String} `glob` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as regex source string. + * @api public + */ -function isDataDescriptor(obj, prop) { - if (typeOf(obj) !== 'object') { - return false; +micromatch.parse = (patterns, options) => { + let res = []; + for (let pattern of [].concat(patterns || [])) { + for (let str of braces(String(pattern), options)) { + res.push(picomatch.parse(str, options)); + } } + return res; +}; - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } +/** + * Process the given brace `pattern`. + * + * ```js + * const { braces } = require('micromatch'); + * console.log(braces('foo/{a,b,c}/bar')); + * //=> [ 'foo/(a|b|c)/bar' ] + * + * console.log(braces('foo/{a,b,c}/bar', { expand: true })); + * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] + * ``` + * @param {String} `pattern` String with brace pattern to process. + * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. + * @return {Array} + * @api public + */ - if (!('value' in obj) && !('writable' in obj)) { - return false; +micromatch.braces = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + if ((options && options.nobrace === true) || !/\{.*\}/.test(pattern)) { + return [pattern]; } + return braces(pattern, options); +}; - for (var key in obj) { - if (key === 'value') continue; - - if (!data.hasOwnProperty(key)) { - continue; - } - - if (typeOf(obj[key]) === data[key]) { - continue; - } +/** + * Expand braces + */ - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -} +micromatch.braceExpand = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + return micromatch.braces(pattern, { ...options, expand: true }); +}; /** - * Expose `isDataDescriptor` + * Expose micromatch */ -module.exports = isDataDescriptor; +module.exports = micromatch; /***/ }), -/***/ "../../node_modules/define-property/node_modules/is-data-descriptor/node_modules/kind-of/index.js": +/***/ "../../node_modules/del/node_modules/p-map/index.js": /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__("../../node_modules/is-buffer/index.js"); -var toString = Object.prototype.toString; +"use strict"; -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ +const AggregateError = __webpack_require__("../../node_modules/del/node_modules/aggregate-error/index.js"); -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } +module.exports = async ( + iterable, + mapper, + { + concurrency = Infinity, + stopOnError = true + } = {} +) => { + return new Promise((resolve, reject) => { + if (typeof mapper !== 'function') { + throw new TypeError('Mapper function is required'); + } - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } + if (!(typeof concurrency === 'number' && concurrency >= 1)) { + throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${concurrency}\` (${typeof concurrency})`); + } - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } + const ret = []; + const errors = []; + const iterator = iterable[Symbol.iterator](); + let isRejected = false; + let isIterableDone = false; + let resolvingCount = 0; + let currentIndex = 0; - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } + const next = () => { + if (isRejected) { + return; + } - // other objects - var type = toString.call(val); + const nextItem = iterator.next(); + const i = currentIndex; + currentIndex++; - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } + if (nextItem.done) { + isIterableDone = true; - // buffer - if (isBuffer(val)) { - return 'buffer'; - } + if (resolvingCount === 0) { + if (!stopOnError && errors.length !== 0) { + reject(new AggregateError(errors)); + } else { + resolve(ret); + } + } - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } + return; + } - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } + resolvingCount++; + + (async () => { + try { + const element = await nextItem.value; + ret[i] = await mapper(element, i); + resolvingCount--; + next(); + } catch (error) { + if (stopOnError) { + isRejected = true; + reject(error); + } else { + errors.push(error); + resolvingCount--; + next(); + } + } + })(); + }; + + for (let i = 0; i < concurrency; i++) { + next(); - // must be a plain object - return 'object'; + if (isIterableDone) { + break; + } + } + }); }; /***/ }), -/***/ "../../node_modules/define-property/node_modules/is-descriptor/index.js": +/***/ "../../node_modules/detect-indent/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -/*! - * is-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ +// Detect either spaces or tabs but not both to properly handle tabs for indentation and spaces for alignment +const INDENT_REGEX = /^(?:( )+|\t+)/; -var typeOf = __webpack_require__("../../node_modules/define-property/node_modules/kind-of/index.js"); -var isAccessor = __webpack_require__("../../node_modules/define-property/node_modules/is-accessor-descriptor/index.js"); -var isData = __webpack_require__("../../node_modules/define-property/node_modules/is-data-descriptor/index.js"); - -module.exports = function isDescriptor(obj, key) { - if (typeOf(obj) !== 'object') { - return false; - } - if ('get' in obj) { - return isAccessor(obj, key); - } - return isData(obj, key); -}; +const INDENT_TYPE_SPACE = 'space'; +const INDENT_TYPE_TAB = 'tab'; +// Make a Map that counts how many indents/unindents have occurred for a given size and how many lines follow a given indentation. +// The key is a concatenation of the indentation type (s = space and t = tab) and the size of the indents/unindents. +// +// indents = { +// t3: [1, 0], +// t4: [1, 5], +// s5: [1, 0], +// s12: [1, 0], +// } +function makeIndentsMap(string, ignoreSingleSpaces) { + const indents = new Map(); -/***/ }), + // Remember the size of previous line's indentation + let previousSize = 0; + let previousIndentType; -/***/ "../../node_modules/define-property/node_modules/kind-of/index.js": -/***/ (function(module, exports) { + // Indents key (ident type + size of the indents/unindents) + let key; -var toString = Object.prototype.toString; + for (const line of string.split(/\n/g)) { + if (!line) { + // Ignore empty lines + continue; + } -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ + let indent; + let indentType; + let weight; + let entry; + const matches = line.match(INDENT_REGEX); -module.exports = function kindOf(val) { - var type = typeof val; + if (matches === null) { + previousSize = 0; + previousIndentType = ''; + } else { + indent = matches[0].length; - // primitivies - if (type === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (type === 'string' || val instanceof String) { - return 'string'; - } - if (type === 'number' || val instanceof Number) { - return 'number'; - } + if (matches[1]) { + indentType = INDENT_TYPE_SPACE; + } else { + indentType = INDENT_TYPE_TAB; + } - // functions - if (type === 'function' || val instanceof Function) { - if (typeof val.constructor.name !== 'undefined' && val.constructor.name.slice(0, 9) === 'Generator') { - return 'generatorfunction'; - } - return 'function'; - } + // Ignore single space unless it's the only indent detected to prevent common false positives + if (ignoreSingleSpaces && indentType === INDENT_TYPE_SPACE && indent === 1) { + continue; + } - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } + if (indentType !== previousIndentType) { + previousSize = 0; + } - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } + previousIndentType = indentType; - // other objects - type = toString.call(val); + weight = 0; - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - if (type === '[object Promise]') { - return 'promise'; - } + const indentDifference = indent - previousSize; + previousSize = indent; - // buffer - if (isBuffer(val)) { - return 'buffer'; - } + // Previous line have same indent? + if (indentDifference === 0) { + weight++; + // We use the key from previous loop + } else { + const absoluteIndentDifference = indentDifference > 0 ? indentDifference : -indentDifference; + key = encodeIndentsKey(indentType, absoluteIndentDifference); + } - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - if (type === '[object Map Iterator]') { - return 'mapiterator'; - } - if (type === '[object Set Iterator]') { - return 'setiterator'; - } - if (type === '[object String Iterator]') { - return 'stringiterator'; - } - if (type === '[object Array Iterator]') { - return 'arrayiterator'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } + // Update the stats + entry = indents.get(key); - // must be a plain object - return 'object'; -}; + if (entry === undefined) { + entry = [1, 0]; // Init + } else { + entry = [++entry[0], entry[1] + weight]; + } -/** - * If you need to support Safari 5-7 (8-10 yr-old browser), - * take a look at https://github.com/feross/is-buffer - */ + indents.set(key, entry); + } + } -function isBuffer(val) { - return val.constructor - && typeof val.constructor.isBuffer === 'function' - && val.constructor.isBuffer(val); + return indents; } +// Encode the indent type and amount as a string (e.g. 's4') for use as a compound key in the indents Map. +function encodeIndentsKey(indentType, indentAmount) { + const typeCharacter = indentType === INDENT_TYPE_SPACE ? 's' : 't'; + return typeCharacter + String(indentAmount); +} -/***/ }), +// Extract the indent type and amount from a key of the indents Map. +function decodeIndentsKey(indentsKey) { + const keyHasTypeSpace = indentsKey[0] === 's'; + const type = keyHasTypeSpace ? INDENT_TYPE_SPACE : INDENT_TYPE_TAB; -/***/ "../../node_modules/del/index.js": -/***/ (function(module, exports, __webpack_require__) { + const amount = Number(indentsKey.slice(1)); -"use strict"; + return {type, amount}; +} -const {promisify} = __webpack_require__("util"); -const path = __webpack_require__("path"); -const globby = __webpack_require__("../../node_modules/del/node_modules/globby/index.js"); -const isGlob = __webpack_require__("../../node_modules/is-glob/index.js"); -const slash = __webpack_require__("../../node_modules/slash/index.js"); -const gracefulFs = __webpack_require__("../../node_modules/graceful-fs/graceful-fs.js"); -const isPathCwd = __webpack_require__("../../node_modules/is-path-cwd/index.js"); -const isPathInside = __webpack_require__("../../node_modules/is-path-inside/index.js"); -const rimraf = __webpack_require__("../../node_modules/rimraf/rimraf.js"); -const pMap = __webpack_require__("../../node_modules/del/node_modules/p-map/index.js"); +// Return the key (e.g. 's4') from the indents Map that represents the most common indent, +// or return undefined if there are no indents. +function getMostUsedKey(indents) { + let result; + let maxUsed = 0; + let maxWeight = 0; -const rimrafP = promisify(rimraf); + for (const [key, [usedCount, weight]] of indents) { + if (usedCount > maxUsed || (usedCount === maxUsed && weight > maxWeight)) { + maxUsed = usedCount; + maxWeight = weight; + result = key; + } + } -const rimrafOptions = { - glob: false, - unlink: gracefulFs.unlink, - unlinkSync: gracefulFs.unlinkSync, - chmod: gracefulFs.chmod, - chmodSync: gracefulFs.chmodSync, - stat: gracefulFs.stat, - statSync: gracefulFs.statSync, - lstat: gracefulFs.lstat, - lstatSync: gracefulFs.lstatSync, - rmdir: gracefulFs.rmdir, - rmdirSync: gracefulFs.rmdirSync, - readdir: gracefulFs.readdir, - readdirSync: gracefulFs.readdirSync -}; + return result; +} -function safeCheck(file, cwd) { - if (isPathCwd(file)) { - throw new Error('Cannot delete the current working directory. Can be overridden with the `force` option.'); - } +function makeIndentString(type, amount) { + const indentCharacter = type === INDENT_TYPE_SPACE ? ' ' : '\t'; + return indentCharacter.repeat(amount); +} - if (!isPathInside(file, cwd)) { - throw new Error('Cannot delete files/directories outside the current working directory. Can be overridden with the `force` option.'); +module.exports = string => { + if (typeof string !== 'string') { + throw new TypeError('Expected a string'); } -} -function normalizePatterns(patterns) { - patterns = Array.isArray(patterns) ? patterns : [patterns]; + // Identify indents while skipping single space indents to avoid common edge cases (e.g. code comments) + // If no indents are identified, run again and include all indents for comprehensive detection + let indents = makeIndentsMap(string, true); + if (indents.size === 0) { + indents = makeIndentsMap(string, false); + } - patterns = patterns.map(pattern => { - if (process.platform === 'win32' && isGlob(pattern) === false) { - return slash(pattern); - } + const keyOfMostUsedIndent = getMostUsedKey(indents); - return pattern; - }); + let type; + let amount = 0; + let indent = ''; - return patterns; -} + if (keyOfMostUsedIndent !== undefined) { + ({type, amount} = decodeIndentsKey(keyOfMostUsedIndent)); + indent = makeIndentString(type, amount); + } -module.exports = async (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => { - options = { - expandDirectories: false, - onlyFiles: false, - followSymbolicLinks: false, - cwd, - ...options + return { + amount, + type, + indent }; +}; - patterns = normalizePatterns(patterns); - const files = (await globby(patterns, options)) - .sort((a, b) => b.localeCompare(a)); +/***/ }), - const mapper = async file => { - file = path.resolve(cwd, file); +/***/ "../../node_modules/detect-newline/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (!force) { - safeCheck(file, cwd); - } +"use strict"; - if (!dryRun) { - await rimrafP(file, rimrafOptions); - } - return file; - }; +const detectNewline = string => { + if (typeof string !== 'string') { + throw new TypeError('Expected a string'); + } - const removedFiles = await pMap(files, mapper, options); + const newlines = string.match(/(?:\r?\n)/g) || []; - removedFiles.sort((a, b) => a.localeCompare(b)); + if (newlines.length === 0) { + return; + } - return removedFiles; -}; + const crlf = newlines.filter(newline => newline === '\r\n').length; + const lf = newlines.length - crlf; -module.exports.sync = (patterns, {force, dryRun, cwd = process.cwd(), ...options} = {}) => { - options = { - expandDirectories: false, - onlyFiles: false, - followSymbolicLinks: false, - cwd, - ...options - }; + return crlf > lf ? '\r\n' : '\n'; +}; - patterns = normalizePatterns(patterns); +module.exports = detectNewline; +module.exports.graceful = string => (typeof string === 'string' && detectNewline(string)) || '\n'; - const files = globby.sync(patterns, options) - .sort((a, b) => b.localeCompare(a)); - const removedFiles = files.map(file => { - file = path.resolve(cwd, file); +/***/ }), - if (!force) { - safeCheck(file, cwd); - } +/***/ "../../node_modules/dir-glob/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (!dryRun) { - rimraf.sync(file, rimrafOptions); - } +"use strict"; - return file; - }); +const path = __webpack_require__("path"); +const pathType = __webpack_require__("../../node_modules/path-type/index.js"); - removedFiles.sort((a, b) => a.localeCompare(b)); +const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; - return removedFiles; +const getPath = (filepath, cwd) => { + const pth = filepath[0] === '!' ? filepath.slice(1) : filepath; + return path.isAbsolute(pth) ? pth : path.join(cwd, pth); }; +const addExtensions = (file, extensions) => { + if (path.extname(file)) { + return `**/${file}`; + } -/***/ }), + return `**/${file}.${getExtensions(extensions)}`; +}; -/***/ "../../node_modules/del/node_modules/aggregate-error/index.js": -/***/ (function(module, exports, __webpack_require__) { +const getGlob = (directory, options) => { + if (options.files && !Array.isArray(options.files)) { + throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof options.files}\``); + } -"use strict"; + if (options.extensions && !Array.isArray(options.extensions)) { + throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof options.extensions}\``); + } -const indentString = __webpack_require__("../../node_modules/del/node_modules/indent-string/index.js"); -const cleanStack = __webpack_require__("../../node_modules/clean-stack/index.js"); + if (options.files && options.extensions) { + return options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions))); + } -const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, ''); + if (options.files) { + return options.files.map(x => path.posix.join(directory, `**/${x}`)); + } -class AggregateError extends Error { - constructor(errors) { - if (!Array.isArray(errors)) { - throw new TypeError(`Expected input to be an Array, got ${typeof errors}`); - } + if (options.extensions) { + return [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)]; + } - errors = [...errors].map(error => { - if (error instanceof Error) { - return error; - } + return [path.posix.join(directory, '**')]; +}; - if (error !== null && typeof error === 'object') { - // Handle plain error objects with message property and/or possibly other metadata - return Object.assign(new Error(error.message), error); - } +module.exports = async (input, options) => { + options = { + cwd: process.cwd(), + ...options + }; - return new Error(error); - }); + if (typeof options.cwd !== 'string') { + throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``); + } - let message = errors - .map(error => { - // The `stack` property is not standardized, so we can't assume it exists - return typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error); - }) - .join('\n'); - message = '\n' + indentString(message, 4); - super(message); + const globs = await Promise.all([].concat(input).map(async x => { + const isDirectory = await pathType.isDirectory(getPath(x, options.cwd)); + return isDirectory ? getGlob(x, options) : x; + })); - this.name = 'AggregateError'; + return [].concat.apply([], globs); // eslint-disable-line prefer-spread +}; - Object.defineProperty(this, '_errors', {value: errors}); - } +module.exports.sync = (input, options) => { + options = { + cwd: process.cwd(), + ...options + }; - * [Symbol.iterator]() { - for (const error of this._errors) { - yield error; - } + if (typeof options.cwd !== 'string') { + throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``); } -} -module.exports = AggregateError; + const globs = [].concat(input).map(x => pathType.isDirectorySync(getPath(x, options.cwd)) ? getGlob(x, options) : x); + + return [].concat.apply([], globs); // eslint-disable-line prefer-spread +}; /***/ }), -/***/ "../../node_modules/del/node_modules/fast-glob/out/index.js": +/***/ "../../node_modules/duplexer/index.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; +var Stream = __webpack_require__("stream") +var writeMethods = ["write", "end", "destroy"] +var readMethods = ["resume", "pause"] +var readEvents = ["data", "close"] +var slice = Array.prototype.slice -const taskManager = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/managers/tasks.js"); -const async_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/async.js"); -const stream_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/stream.js"); -const sync_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/sync.js"); -const settings_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/settings.js"); -const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); -async function FastGlob(source, options) { - assertPatternsInput(source); - const works = getWorks(source, async_1.default, options); - const result = await Promise.all(works); - return utils.array.flatten(result); -} -// https://github.com/typescript-eslint/typescript-eslint/issues/60 -// eslint-disable-next-line no-redeclare -(function (FastGlob) { - function sync(source, options) { - assertPatternsInput(source); - const works = getWorks(source, sync_1.default, options); - return utils.array.flatten(works); - } - FastGlob.sync = sync; - function stream(source, options) { - assertPatternsInput(source); - const works = getWorks(source, stream_1.default, options); - /** - * The stream returned by the provider cannot work with an asynchronous iterator. - * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams. - * This affects performance (+25%). I don't see best solution right now. - */ - return utils.stream.merge(works); - } - FastGlob.stream = stream; - function generateTasks(source, options) { - assertPatternsInput(source); - const patterns = [].concat(source); - const settings = new settings_1.default(options); - return taskManager.generate(patterns, settings); - } - FastGlob.generateTasks = generateTasks; - function isDynamicPattern(source, options) { - assertPatternsInput(source); - const settings = new settings_1.default(options); - return utils.pattern.isDynamicPattern(source, settings); - } - FastGlob.isDynamicPattern = isDynamicPattern; - function escapePath(source) { - assertPatternsInput(source); - return utils.path.escape(source); +module.exports = duplex + +function forEach (arr, fn) { + if (arr.forEach) { + return arr.forEach(fn) } - FastGlob.escapePath = escapePath; -})(FastGlob || (FastGlob = {})); -function getWorks(source, _Provider, options) { - const patterns = [].concat(source); - const settings = new settings_1.default(options); - const tasks = taskManager.generate(patterns, settings); - const provider = new _Provider(settings); - return tasks.map(provider.read, provider); -} -function assertPatternsInput(input) { - const source = [].concat(input); - const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); - if (!isValidSource) { - throw new TypeError('Patterns must be a string (non empty) or an array of strings'); + + for (var i = 0; i < arr.length; i++) { + fn(arr[i], i) } } -module.exports = FastGlob; +function duplex(writer, reader) { + var stream = new Stream() + var ended = false -/***/ }), + forEach(writeMethods, proxyWriter) -/***/ "../../node_modules/del/node_modules/fast-glob/out/managers/tasks.js": -/***/ (function(module, exports, __webpack_require__) { + forEach(readMethods, proxyReader) -"use strict"; + forEach(readEvents, proxyStream) -Object.defineProperty(exports, "__esModule", { value: true }); -exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; -const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); -function generate(patterns, settings) { - const positivePatterns = getPositivePatterns(patterns); - const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); - const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); - const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); - const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); - const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); - return staticTasks.concat(dynamicTasks); -} -exports.generate = generate; -/** - * Returns tasks grouped by basic pattern directories. - * - * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately. - * This is necessary because directory traversal starts at the base directory and goes deeper. - */ -function convertPatternsToTasks(positive, negative, dynamic) { - const tasks = []; - const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); - const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); - const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); - const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); - tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); - /* - * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory - * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest. - */ - if ('.' in insideCurrentDirectoryGroup) { - tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic)); - } - else { - tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); - } - return tasks; -} -exports.convertPatternsToTasks = convertPatternsToTasks; -function getPositivePatterns(patterns) { - return utils.pattern.getPositivePatterns(patterns); -} -exports.getPositivePatterns = getPositivePatterns; -function getNegativePatternsAsPositive(patterns, ignore) { - const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); - const positive = negative.map(utils.pattern.convertToPositivePattern); - return positive; -} -exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; -function groupPatternsByBaseDirectory(patterns) { - const group = {}; - return patterns.reduce((collection, pattern) => { - const base = utils.pattern.getBaseDirectory(pattern); - if (base in collection) { - collection[base].push(pattern); - } - else { - collection[base] = [pattern]; - } - return collection; - }, group); -} -exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; -function convertPatternGroupsToTasks(positive, negative, dynamic) { - return Object.keys(positive).map((base) => { - return convertPatternGroupToTask(base, positive[base], negative, dynamic); - }); -} -exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; -function convertPatternGroupToTask(base, positive, negative, dynamic) { - return { - dynamic, - positive, - negative, - base, - patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) - }; -} -exports.convertPatternGroupToTask = convertPatternGroupToTask; + reader.on("end", handleEnd) + writer.on("drain", function() { + stream.emit("drain") + }) -/***/ }), + writer.on("error", reemit) + reader.on("error", reemit) -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/async.js": -/***/ (function(module, exports, __webpack_require__) { + stream.writable = writer.writable + stream.readable = reader.readable -"use strict"; + return stream -Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/stream.js"); -const provider_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/provider.js"); -class ProviderAsync extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new stream_1.default(this._settings); + function proxyWriter(methodName) { + stream[methodName] = method + + function method() { + return writer[methodName].apply(writer, arguments) + } } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const entries = []; - return new Promise((resolve, reject) => { - const stream = this.api(root, task, options); - stream.once('error', reject); - stream.on('data', (entry) => entries.push(options.transform(entry))); - stream.once('end', () => resolve(entries)); - }); + + function proxyReader(methodName) { + stream[methodName] = method + + function method() { + stream.emit(methodName) + var func = reader[methodName] + if (func) { + return func.apply(reader, arguments) + } + reader.emit(methodName) + } } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); + + function proxyStream(methodName) { + reader.on(methodName, reemit) + + function reemit() { + var args = slice.call(arguments) + args.unshift(methodName) + stream.emit.apply(stream, args) } - return this._reader.static(task.patterns, options); + } + + function handleEnd() { + if (ended) { + return + } + ended = true + var args = slice.call(arguments) + args.unshift("end") + stream.emit.apply(stream, args) + } + + function reemit(err) { + stream.emit("error", err) } } -exports.default = ProviderAsync; /***/ }), -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/filters/deep.js": +/***/ "../../node_modules/end-of-stream/index.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; +var once = __webpack_require__("../../node_modules/once/once.js"); -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); -const partial_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/matchers/partial.js"); -class DeepFilter { - constructor(_settings, _micromatchOptions) { - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - } - getFilter(basePath, positive, negative) { - const matcher = this._getMatcher(positive); - const negativeRe = this._getNegativePatternsRe(negative); - return (entry) => this._filter(basePath, entry, matcher, negativeRe); - } - _getMatcher(patterns) { - return new partial_1.default(patterns, this._settings, this._micromatchOptions); - } - _getNegativePatternsRe(patterns) { - const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); - return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); - } - _filter(basePath, entry, matcher, negativeRe) { - if (this._isSkippedByDeep(basePath, entry.path)) { - return false; - } - if (this._isSkippedSymbolicLink(entry)) { - return false; - } - const filepath = utils.path.removeLeadingDotSegment(entry.path); - if (this._isSkippedByPositivePatterns(filepath, matcher)) { - return false; - } - return this._isSkippedByNegativePatterns(filepath, negativeRe); - } - _isSkippedByDeep(basePath, entryPath) { - /** - * Avoid unnecessary depth calculations when it doesn't matter. - */ - if (this._settings.deep === Infinity) { - return false; - } - return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; - } - _getEntryLevel(basePath, entryPath) { - const entryPathDepth = entryPath.split('/').length; - if (basePath === '') { - return entryPathDepth; - } - const basePathDepth = basePath.split('/').length; - return entryPathDepth - basePathDepth; - } - _isSkippedSymbolicLink(entry) { - return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); - } - _isSkippedByPositivePatterns(entryPath, matcher) { - return !this._settings.baseNameMatch && !matcher.match(entryPath); - } - _isSkippedByNegativePatterns(entryPath, patternsRe) { - return !utils.pattern.matchAny(entryPath, patternsRe); - } -} -exports.default = DeepFilter; +var noop = function() {}; +var isRequest = function(stream) { + return stream.setHeader && typeof stream.abort === 'function'; +}; -/***/ }), +var isChildProcess = function(stream) { + return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 +}; -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/filters/entry.js": -/***/ (function(module, exports, __webpack_require__) { +var eos = function(stream, opts, callback) { + if (typeof opts === 'function') return eos(stream, null, opts); + if (!opts) opts = {}; -"use strict"; + callback = once(callback || noop); -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); -class EntryFilter { - constructor(_settings, _micromatchOptions) { - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - this.index = new Map(); - } - getFilter(positive, negative) { - const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); - const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions); - return (entry) => this._filter(entry, positiveRe, negativeRe); - } - _filter(entry, positiveRe, negativeRe) { - if (this._settings.unique && this._isDuplicateEntry(entry)) { - return false; - } - if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { - return false; - } - if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) { - return false; - } - const filepath = this._settings.baseNameMatch ? entry.name : entry.path; - const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe); - if (this._settings.unique && isMatched) { - this._createIndexRecord(entry); - } - return isMatched; - } - _isDuplicateEntry(entry) { - return this.index.has(entry.path); - } - _createIndexRecord(entry) { - this.index.set(entry.path, undefined); - } - _onlyFileFilter(entry) { - return this._settings.onlyFiles && !entry.dirent.isFile(); - } - _onlyDirectoryFilter(entry) { - return this._settings.onlyDirectories && !entry.dirent.isDirectory(); - } - _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { - if (!this._settings.absolute) { - return false; - } - const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); - return utils.pattern.matchAny(fullpath, patternsRe); - } - _isMatchToPatterns(entryPath, patternsRe) { - const filepath = utils.path.removeLeadingDotSegment(entryPath); - return utils.pattern.matchAny(filepath, patternsRe); - } -} -exports.default = EntryFilter; + var ws = stream._writableState; + var rs = stream._readableState; + var readable = opts.readable || (opts.readable !== false && stream.readable); + var writable = opts.writable || (opts.writable !== false && stream.writable); + var cancelled = false; + var onlegacyfinish = function() { + if (!stream.writable) onfinish(); + }; -/***/ }), + var onfinish = function() { + writable = false; + if (!readable) callback.call(stream); + }; -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/filters/error.js": -/***/ (function(module, exports, __webpack_require__) { + var onend = function() { + readable = false; + if (!writable) callback.call(stream); + }; -"use strict"; + var onexit = function(exitCode) { + callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); + }; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); -class ErrorFilter { - constructor(_settings) { - this._settings = _settings; - } - getFilter() { - return (error) => this._isNonFatalError(error); - } - _isNonFatalError(error) { - return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors; - } -} -exports.default = ErrorFilter; + var onerror = function(err) { + callback.call(stream, err); + }; + var onclose = function() { + process.nextTick(onclosenexttick); + }; -/***/ }), + var onclosenexttick = function() { + if (cancelled) return; + if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); + if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); + }; -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/matchers/matcher.js": -/***/ (function(module, exports, __webpack_require__) { + var onrequest = function() { + stream.req.on('finish', onfinish); + }; -"use strict"; + if (isRequest(stream)) { + stream.on('complete', onfinish); + stream.on('abort', onclose); + if (stream.req) onrequest(); + else stream.on('request', onrequest); + } else if (writable && !ws) { // legacy streams + stream.on('end', onlegacyfinish); + stream.on('close', onlegacyfinish); + } -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); -class Matcher { - constructor(_patterns, _settings, _micromatchOptions) { - this._patterns = _patterns; - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - this._storage = []; - this._fillStorage(); - } - _fillStorage() { - /** - * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level). - * So, before expand patterns with brace expansion into separated patterns. - */ - const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns); - for (const pattern of patterns) { - const segments = this._getPatternSegments(pattern); - const sections = this._splitSegmentsIntoSections(segments); - this._storage.push({ - complete: sections.length <= 1, - pattern, - segments, - sections - }); - } - } - _getPatternSegments(pattern) { - const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); - return parts.map((part) => { - const dynamic = utils.pattern.isDynamicPattern(part, this._settings); - if (!dynamic) { - return { - dynamic: false, - pattern: part - }; - } - return { - dynamic: true, - pattern: part, - patternRe: utils.pattern.makeRe(part, this._micromatchOptions) - }; - }); - } - _splitSegmentsIntoSections(segments) { - return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); - } -} -exports.default = Matcher; + if (isChildProcess(stream)) stream.on('exit', onexit); + + stream.on('end', onend); + stream.on('finish', onfinish); + if (opts.error !== false) stream.on('error', onerror); + stream.on('close', onclose); + + return function() { + cancelled = true; + stream.removeListener('complete', onfinish); + stream.removeListener('abort', onclose); + stream.removeListener('request', onrequest); + if (stream.req) stream.req.removeListener('finish', onfinish); + stream.removeListener('end', onlegacyfinish); + stream.removeListener('close', onlegacyfinish); + stream.removeListener('finish', onfinish); + stream.removeListener('exit', onexit); + stream.removeListener('end', onend); + stream.removeListener('error', onerror); + stream.removeListener('close', onclose); + }; +}; + +module.exports = eos; /***/ }), -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/matchers/partial.js": +/***/ "../../node_modules/error-ex/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const matcher_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/matchers/matcher.js"); -class PartialMatcher extends matcher_1.default { - match(filepath) { - const parts = filepath.split('/'); - const levels = parts.length; - const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels); - for (const pattern of patterns) { - const section = pattern.sections[0]; - /** - * In this case, the pattern has a globstar and we must read all directories unconditionally, - * but only if the level has reached the end of the first group. - * - * fixtures/{a,b}/** - * ^ true/false ^ always true - */ - if (!pattern.complete && levels > section.length) { - return true; - } - const match = parts.every((part, index) => { - const segment = pattern.segments[index]; - if (segment.dynamic && segment.patternRe.test(part)) { - return true; - } - if (!segment.dynamic && segment.pattern === part) { - return true; - } - return false; - }); - if (match) { - return true; - } - } - return false; - } -} -exports.default = PartialMatcher; +var util = __webpack_require__("util"); +var isArrayish = __webpack_require__("../../node_modules/is-arrayish/index.js"); -/***/ }), +var errorEx = function errorEx(name, properties) { + if (!name || name.constructor !== String) { + properties = name || {}; + name = Error.name; + } -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/provider.js": -/***/ (function(module, exports, __webpack_require__) { + var errorExError = function ErrorEXError(message) { + if (!this) { + return new ErrorEXError(message); + } -"use strict"; + message = message instanceof Error + ? message.message + : (message || this.message); -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __webpack_require__("path"); -const deep_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/filters/deep.js"); -const entry_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/filters/entry.js"); -const error_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/filters/error.js"); -const entry_2 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/transformers/entry.js"); -class Provider { - constructor(_settings) { - this._settings = _settings; - this.errorFilter = new error_1.default(this._settings); - this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); - this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); - this.entryTransformer = new entry_2.default(this._settings); - } - _getRootDirectory(task) { - return path.resolve(this._settings.cwd, task.base); - } - _getReaderOptions(task) { - const basePath = task.base === '.' ? '' : task.base; - return { - basePath, - pathSegmentSeparator: '/', - concurrency: this._settings.concurrency, - deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), - entryFilter: this.entryFilter.getFilter(task.positive, task.negative), - errorFilter: this.errorFilter.getFilter(), - followSymbolicLinks: this._settings.followSymbolicLinks, - fs: this._settings.fs, - stats: this._settings.stats, - throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, - transform: this.entryTransformer.getTransformer() - }; - } - _getMicromatchOptions() { - return { - dot: this._settings.dot, - matchBase: this._settings.baseNameMatch, - nobrace: !this._settings.braceExpansion, - nocase: !this._settings.caseSensitiveMatch, - noext: !this._settings.extglob, - noglobstar: !this._settings.globstar, - posix: true, - strictSlashes: false - }; - } -} -exports.default = Provider; + Error.call(this, message); + Error.captureStackTrace(this, errorExError); + this.name = name; -/***/ }), + Object.defineProperty(this, 'message', { + configurable: true, + enumerable: false, + get: function () { + var newMessage = message.split(/\r?\n/g); -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/stream.js": -/***/ (function(module, exports, __webpack_require__) { + for (var key in properties) { + if (!properties.hasOwnProperty(key)) { + continue; + } -"use strict"; + var modifier = properties[key]; -Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__("stream"); -const stream_2 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/stream.js"); -const provider_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/provider.js"); -class ProviderStream extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new stream_2.default(this._settings); - } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const source = this.api(root, task, options); - const destination = new stream_1.Readable({ objectMode: true, read: () => { } }); - source - .once('error', (error) => destination.emit('error', error)) - .on('data', (entry) => destination.emit('data', options.transform(entry))) - .once('end', () => destination.emit('end')); - destination - .once('close', () => source.destroy()); - return destination; - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } -} -exports.default = ProviderStream; + if ('message' in modifier) { + newMessage = modifier.message(this[key], newMessage) || newMessage; + if (!isArrayish(newMessage)) { + newMessage = [newMessage]; + } + } + } + + return newMessage.join('\n'); + }, + set: function (v) { + message = v; + } + }); + + var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack'); + var stackGetter = stackDescriptor.get; + var stackValue = stackDescriptor.value; + delete stackDescriptor.value; + delete stackDescriptor.writable; + + stackDescriptor.get = function () { + var stack = (stackGetter) + ? stackGetter.call(this).split(/\r?\n+/g) + : stackValue.split(/\r?\n+/g); + + // starting in Node 7, the stack builder caches the message. + // just replace it. + stack[0] = this.name + ': ' + this.message; + + var lineCount = 1; + for (var key in properties) { + if (!properties.hasOwnProperty(key)) { + continue; + } + + var modifier = properties[key]; + + if ('line' in modifier) { + var line = modifier.line(this[key]); + if (line) { + stack.splice(lineCount++, 0, ' ' + line); + } + } + + if ('stack' in modifier) { + modifier.stack(this[key], stack); + } + } + + return stack.join('\n'); + }; + + Object.defineProperty(this, 'stack', stackDescriptor); + }; + + if (Object.setPrototypeOf) { + Object.setPrototypeOf(errorExError.prototype, Error.prototype); + Object.setPrototypeOf(errorExError, Error); + } else { + util.inherits(errorExError, Error); + } + + return errorExError; +}; + +errorEx.append = function (str, def) { + return { + message: function (v, message) { + v = v || def; + + if (v) { + message[0] += ' ' + str.replace('%s', v.toString()); + } + + return message; + } + }; +}; + +errorEx.line = function (str, def) { + return { + line: function (v) { + v = v || def; + + if (v) { + return str.replace('%s', v.toString()); + } + + return null; + } + }; +}; + +module.exports = errorEx; /***/ }), -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/sync.js": +/***/ "../../node_modules/escape-string-regexp/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/sync.js"); -const provider_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/providers/provider.js"); -class ProviderSync extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new sync_1.default(this._settings); - } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const entries = this.api(root, task, options); - return entries.map(options.transform); - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } -} -exports.default = ProviderSync; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; /***/ }), -/***/ "../../node_modules/del/node_modules/fast-glob/out/providers/transformers/entry.js": +/***/ "../../node_modules/execa/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); -class EntryTransformer { - constructor(_settings) { - this._settings = _settings; - } - getTransformer() { - return (entry) => this._transform(entry); - } - _transform(entry) { - let filepath = entry.path; - if (this._settings.absolute) { - filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); - filepath = utils.path.unixify(filepath); - } - if (this._settings.markDirectories && entry.dirent.isDirectory()) { - filepath += '/'; - } - if (!this._settings.objectMode) { - return filepath; - } - return Object.assign(Object.assign({}, entry), { path: filepath }); - } -} -exports.default = EntryTransformer; +const path = __webpack_require__("path"); +const childProcess = __webpack_require__("child_process"); +const crossSpawn = __webpack_require__("../../node_modules/cross-spawn/index.js"); +const stripFinalNewline = __webpack_require__("../../node_modules/strip-final-newline/index.js"); +const npmRunPath = __webpack_require__("../../node_modules/npm-run-path/index.js"); +const onetime = __webpack_require__("../../node_modules/onetime/index.js"); +const makeError = __webpack_require__("../../node_modules/execa/lib/error.js"); +const normalizeStdio = __webpack_require__("../../node_modules/execa/lib/stdio.js"); +const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__("../../node_modules/execa/lib/kill.js"); +const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__("../../node_modules/execa/lib/stream.js"); +const {mergePromise, getSpawnedPromise} = __webpack_require__("../../node_modules/execa/lib/promise.js"); +const {joinCommand, parseCommand} = __webpack_require__("../../node_modules/execa/lib/command.js"); +const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100; -/***/ }), +const getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => { + const env = extendEnv ? {...process.env, ...envOption} : envOption; -/***/ "../../node_modules/del/node_modules/fast-glob/out/readers/reader.js": -/***/ (function(module, exports, __webpack_require__) { + if (preferLocal) { + return npmRunPath.env({env, cwd: localDir, execPath}); + } -"use strict"; + return env; +}; -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __webpack_require__("path"); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const utils = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/index.js"); -class Reader { - constructor(_settings) { - this._settings = _settings; - this._fsStatSettings = new fsStat.Settings({ - followSymbolicLink: this._settings.followSymbolicLinks, - fs: this._settings.fs, - throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks - }); - } - _getFullEntryPath(filepath) { - return path.resolve(this._settings.cwd, filepath); - } - _makeEntry(stats, pattern) { - const entry = { - name: pattern, - path: pattern, - dirent: utils.fs.createDirentFromStats(pattern, stats) - }; - if (this._settings.stats) { - entry.stats = stats; - } - return entry; - } - _isFatalError(error) { - return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors; - } -} -exports.default = Reader; +const handleArguments = (file, args, options = {}) => { + const parsed = crossSpawn._parse(file, args, options); + file = parsed.command; + args = parsed.args; + options = parsed.options; + options = { + maxBuffer: DEFAULT_MAX_BUFFER, + buffer: true, + stripFinalNewline: true, + extendEnv: true, + preferLocal: false, + localDir: options.cwd || process.cwd(), + execPath: process.execPath, + encoding: 'utf8', + reject: true, + cleanup: true, + all: false, + windowsHide: true, + ...options + }; -/***/ }), + options.env = getEnv(options); -/***/ "../../node_modules/del/node_modules/fast-glob/out/readers/stream.js": -/***/ (function(module, exports, __webpack_require__) { + options.stdio = normalizeStdio(options); -"use strict"; + if (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') { + // #116 + args.unshift('/q'); + } -Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__("stream"); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const fsWalk = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/index.js"); -const reader_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/reader.js"); -class ReaderStream extends reader_1.default { - constructor() { - super(...arguments); - this._walkStream = fsWalk.walkStream; - this._stat = fsStat.stat; - } - dynamic(root, options) { - return this._walkStream(root, options); - } - static(patterns, options) { - const filepaths = patterns.map(this._getFullEntryPath, this); - const stream = new stream_1.PassThrough({ objectMode: true }); - stream._write = (index, _enc, done) => { - return this._getEntry(filepaths[index], patterns[index], options) - .then((entry) => { - if (entry !== null && options.entryFilter(entry)) { - stream.push(entry); - } - if (index === filepaths.length - 1) { - stream.end(); - } - done(); - }) - .catch(done); - }; - for (let i = 0; i < filepaths.length; i++) { - stream.write(i); - } - return stream; - } - _getEntry(filepath, pattern, options) { - return this._getStat(filepath) - .then((stats) => this._makeEntry(stats, pattern)) - .catch((error) => { - if (options.errorFilter(error)) { - return null; - } - throw error; - }); - } - _getStat(filepath) { - return new Promise((resolve, reject) => { - this._stat(filepath, this._fsStatSettings, (error, stats) => { - return error === null ? resolve(stats) : reject(error); - }); - }); - } -} -exports.default = ReaderStream; + return {file, args, options, parsed}; +}; +const handleOutput = (options, value, error) => { + if (typeof value !== 'string' && !Buffer.isBuffer(value)) { + // When `execa.sync()` errors, we normalize it to '' to mimic `execa()` + return error === undefined ? undefined : ''; + } -/***/ }), + if (options.stripFinalNewline) { + return stripFinalNewline(value); + } -/***/ "../../node_modules/del/node_modules/fast-glob/out/readers/sync.js": -/***/ (function(module, exports, __webpack_require__) { + return value; +}; -"use strict"; +const execa = (file, args, options) => { + const parsed = handleArguments(file, args, options); + const command = joinCommand(file, args); -Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const fsWalk = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/index.js"); -const reader_1 = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/readers/reader.js"); -class ReaderSync extends reader_1.default { - constructor() { - super(...arguments); - this._walkSync = fsWalk.walkSync; - this._statSync = fsStat.statSync; - } - dynamic(root, options) { - return this._walkSync(root, options); - } - static(patterns, options) { - const entries = []; - for (const pattern of patterns) { - const filepath = this._getFullEntryPath(pattern); - const entry = this._getEntry(filepath, pattern, options); - if (entry === null || !options.entryFilter(entry)) { - continue; - } - entries.push(entry); - } - return entries; - } - _getEntry(filepath, pattern, options) { - try { - const stats = this._getStat(filepath); - return this._makeEntry(stats, pattern); - } - catch (error) { - if (options.errorFilter(error)) { - return null; - } - throw error; - } - } - _getStat(filepath) { - return this._statSync(filepath, this._fsStatSettings); - } -} -exports.default = ReaderSync; + let spawned; + try { + spawned = childProcess.spawn(parsed.file, parsed.args, parsed.options); + } catch (error) { + // Ensure the returned error is always both a promise and a child process + const dummySpawned = new childProcess.ChildProcess(); + const errorPromise = Promise.reject(makeError({ + error, + stdout: '', + stderr: '', + all: '', + command, + parsed, + timedOut: false, + isCanceled: false, + killed: false + })); + return mergePromise(dummySpawned, errorPromise); + } + const spawnedPromise = getSpawnedPromise(spawned); + const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise); + const processDone = setExitHandler(spawned, parsed.options, timedPromise); -/***/ }), + const context = {isCanceled: false}; -/***/ "../../node_modules/del/node_modules/fast-glob/out/settings.js": -/***/ (function(module, exports, __webpack_require__) { + spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned)); + spawned.cancel = spawnedCancel.bind(null, spawned, context); -"use strict"; + const handlePromise = async () => { + const [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone); + const stdout = handleOutput(parsed.options, stdoutResult); + const stderr = handleOutput(parsed.options, stderrResult); + const all = handleOutput(parsed.options, allResult); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; -const fs = __webpack_require__("fs"); -const os = __webpack_require__("os"); -/** - * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. - * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 - */ -const CPU_COUNT = Math.max(os.cpus().length, 1); -exports.DEFAULT_FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - lstatSync: fs.lstatSync, - stat: fs.stat, - statSync: fs.statSync, - readdir: fs.readdir, - readdirSync: fs.readdirSync + if (error || exitCode !== 0 || signal !== null) { + const returnedError = makeError({ + error, + exitCode, + signal, + stdout, + stderr, + all, + command, + parsed, + timedOut, + isCanceled: context.isCanceled, + killed: spawned.killed + }); + + if (!parsed.options.reject) { + return returnedError; + } + + throw returnedError; + } + + return { + command, + exitCode: 0, + stdout, + stderr, + all, + failed: false, + timedOut: false, + isCanceled: false, + killed: false + }; + }; + + const handlePromiseOnce = onetime(handlePromise); + + crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed); + + handleInput(spawned, parsed.options.input); + + spawned.all = makeAllStream(spawned, parsed.options); + + return mergePromise(spawned, handlePromiseOnce); }; -class Settings { - constructor(_options = {}) { - this._options = _options; - this.absolute = this._getValue(this._options.absolute, false); - this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); - this.braceExpansion = this._getValue(this._options.braceExpansion, true); - this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); - this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); - this.cwd = this._getValue(this._options.cwd, process.cwd()); - this.deep = this._getValue(this._options.deep, Infinity); - this.dot = this._getValue(this._options.dot, false); - this.extglob = this._getValue(this._options.extglob, true); - this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); - this.fs = this._getFileSystemMethods(this._options.fs); - this.globstar = this._getValue(this._options.globstar, true); - this.ignore = this._getValue(this._options.ignore, []); - this.markDirectories = this._getValue(this._options.markDirectories, false); - this.objectMode = this._getValue(this._options.objectMode, false); - this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); - this.onlyFiles = this._getValue(this._options.onlyFiles, true); - this.stats = this._getValue(this._options.stats, false); - this.suppressErrors = this._getValue(this._options.suppressErrors, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); - this.unique = this._getValue(this._options.unique, true); - if (this.onlyDirectories) { - this.onlyFiles = false; - } - if (this.stats) { - this.objectMode = true; - } - } - _getValue(option, value) { - return option === undefined ? value : option; - } - _getFileSystemMethods(methods = {}) { - return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); - } -} -exports.default = Settings; +module.exports = execa; -/***/ }), +module.exports.sync = (file, args, options) => { + const parsed = handleArguments(file, args, options); + const command = joinCommand(file, args); -/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/array.js": -/***/ (function(module, exports, __webpack_require__) { + validateInputSync(parsed.options); -"use strict"; + let result; + try { + result = childProcess.spawnSync(parsed.file, parsed.args, parsed.options); + } catch (error) { + throw makeError({ + error, + stdout: '', + stderr: '', + all: '', + command, + parsed, + timedOut: false, + isCanceled: false, + killed: false + }); + } -Object.defineProperty(exports, "__esModule", { value: true }); -exports.splitWhen = exports.flatten = void 0; -function flatten(items) { - return items.reduce((collection, item) => [].concat(collection, item), []); -} -exports.flatten = flatten; -function splitWhen(items, predicate) { - const result = [[]]; - let groupIndex = 0; - for (const item of items) { - if (predicate(item)) { - groupIndex++; - result[groupIndex] = []; - } - else { - result[groupIndex].push(item); - } - } - return result; -} -exports.splitWhen = splitWhen; + const stdout = handleOutput(parsed.options, result.stdout, result.error); + const stderr = handleOutput(parsed.options, result.stderr, result.error); + if (result.error || result.status !== 0 || result.signal !== null) { + const error = makeError({ + stdout, + stderr, + error: result.error, + signal: result.signal, + exitCode: result.status, + command, + parsed, + timedOut: result.error && result.error.code === 'ETIMEDOUT', + isCanceled: false, + killed: result.signal !== null + }); -/***/ }), + if (!parsed.options.reject) { + return error; + } -/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/errno.js": -/***/ (function(module, exports, __webpack_require__) { + throw error; + } -"use strict"; + return { + command, + exitCode: 0, + stdout, + stderr, + failed: false, + timedOut: false, + isCanceled: false, + killed: false + }; +}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isEnoentCodeError = void 0; -function isEnoentCodeError(error) { - return error.code === 'ENOENT'; -} -exports.isEnoentCodeError = isEnoentCodeError; +module.exports.command = (command, options) => { + const [file, ...args] = parseCommand(command); + return execa(file, args, options); +}; +module.exports.commandSync = (command, options) => { + const [file, ...args] = parseCommand(command); + return execa.sync(file, args, options); +}; -/***/ }), +module.exports.node = (scriptPath, args, options = {}) => { + if (args && !Array.isArray(args) && typeof args === 'object') { + options = args; + args = []; + } -/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/fs.js": -/***/ (function(module, exports, __webpack_require__) { + const stdio = normalizeStdio.node(options); -"use strict"; + const {nodePath = process.execPath, nodeOptions = process.execArgv} = options; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createDirentFromStats = void 0; -class DirentFromStats { - constructor(name, stats) { - this.name = name; - this.isBlockDevice = stats.isBlockDevice.bind(stats); - this.isCharacterDevice = stats.isCharacterDevice.bind(stats); - this.isDirectory = stats.isDirectory.bind(stats); - this.isFIFO = stats.isFIFO.bind(stats); - this.isFile = stats.isFile.bind(stats); - this.isSocket = stats.isSocket.bind(stats); - this.isSymbolicLink = stats.isSymbolicLink.bind(stats); - } -} -function createDirentFromStats(name, stats) { - return new DirentFromStats(name, stats); -} -exports.createDirentFromStats = createDirentFromStats; + return execa( + nodePath, + [ + ...nodeOptions, + scriptPath, + ...(Array.isArray(args) ? args : []) + ], + { + ...options, + stdin: undefined, + stdout: undefined, + stderr: undefined, + stdio, + shell: false + } + ); +}; /***/ }), -/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/index.js": +/***/ "../../node_modules/execa/lib/command.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; -const array = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/array.js"); -exports.array = array; -const errno = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/errno.js"); -exports.errno = errno; -const fs = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/fs.js"); -exports.fs = fs; -const path = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/path.js"); -exports.path = path; -const pattern = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/pattern.js"); -exports.pattern = pattern; -const stream = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/stream.js"); -exports.stream = stream; -const string = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/utils/string.js"); -exports.string = string; +const SPACES_REGEXP = / +/g; +const joinCommand = (file, args = []) => { + if (!Array.isArray(args)) { + return file; + } -/***/ }), + return [file, ...args].join(' '); +}; -/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/path.js": -/***/ (function(module, exports, __webpack_require__) { +// Allow spaces to be escaped by a backslash if not meant as a delimiter +const handleEscaping = (tokens, token, index) => { + if (index === 0) { + return [token]; + } -"use strict"; + const previousToken = tokens[tokens.length - 1]; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0; -const path = __webpack_require__("path"); -const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\ -const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g; -/** - * Designed to work only with simple paths: `dir\\file`. - */ -function unixify(filepath) { - return filepath.replace(/\\/g, '/'); -} -exports.unixify = unixify; -function makeAbsolute(cwd, filepath) { - return path.resolve(cwd, filepath); -} -exports.makeAbsolute = makeAbsolute; -function escape(pattern) { - return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); -} -exports.escape = escape; -function removeLeadingDotSegment(entry) { - // We do not use `startsWith` because this is 10x slower than current implementation for some cases. - // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with - if (entry.charAt(0) === '.') { - const secondCharactery = entry.charAt(1); - if (secondCharactery === '/' || secondCharactery === '\\') { - return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); - } - } - return entry; -} -exports.removeLeadingDotSegment = removeLeadingDotSegment; + if (previousToken.endsWith('\\')) { + return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`]; + } + + return [...tokens, token]; +}; + +// Handle `execa.command()` +const parseCommand = command => { + return command + .trim() + .split(SPACES_REGEXP) + .reduce(handleEscaping, []); +}; + +module.exports = { + joinCommand, + parseCommand +}; /***/ }), -/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/pattern.js": +/***/ "../../node_modules/execa/lib/error.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; -const path = __webpack_require__("path"); -const globParent = __webpack_require__("../../node_modules/glob-parent/index.js"); -const micromatch = __webpack_require__("../../node_modules/del/node_modules/micromatch/index.js"); -const GLOBSTAR = '**'; -const ESCAPE_SYMBOL = '\\'; -const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; -const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[.*]/; -const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\(.*\|.*\)/; -const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\(.*\)/; -const BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\.\.).*}/; -function isStaticPattern(pattern, options = {}) { - return !isDynamicPattern(pattern, options); -} -exports.isStaticPattern = isStaticPattern; -function isDynamicPattern(pattern, options = {}) { - /** - * A special case with an empty string is necessary for matching patterns that start with a forward slash. - * An empty string cannot be a dynamic pattern. - * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'. - */ - if (pattern === '') { - return false; - } - /** - * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check - * filepath directly (without read directory). - */ - if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { - return true; - } - if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { - return true; - } - if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { - return true; - } - if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) { - return true; - } - return false; -} -exports.isDynamicPattern = isDynamicPattern; -function convertToPositivePattern(pattern) { - return isNegativePattern(pattern) ? pattern.slice(1) : pattern; -} -exports.convertToPositivePattern = convertToPositivePattern; -function convertToNegativePattern(pattern) { - return '!' + pattern; -} -exports.convertToNegativePattern = convertToNegativePattern; -function isNegativePattern(pattern) { - return pattern.startsWith('!') && pattern[1] !== '('; -} -exports.isNegativePattern = isNegativePattern; -function isPositivePattern(pattern) { - return !isNegativePattern(pattern); -} -exports.isPositivePattern = isPositivePattern; -function getNegativePatterns(patterns) { - return patterns.filter(isNegativePattern); -} -exports.getNegativePatterns = getNegativePatterns; -function getPositivePatterns(patterns) { - return patterns.filter(isPositivePattern); -} -exports.getPositivePatterns = getPositivePatterns; -/** - * Returns patterns that can be applied inside the current directory. - * - * @example - * // ['./*', '*', 'a/*'] - * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) - */ -function getPatternsInsideCurrentDirectory(patterns) { - return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); -} -exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; -/** - * Returns patterns to be expanded relative to (outside) the current directory. - * - * @example - * // ['../*', './../*'] - * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) - */ -function getPatternsOutsideCurrentDirectory(patterns) { - return patterns.filter(isPatternRelatedToParentDirectory); -} -exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; -function isPatternRelatedToParentDirectory(pattern) { - return pattern.startsWith('..') || pattern.startsWith('./..'); -} -exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; -function getBaseDirectory(pattern) { - return globParent(pattern, { flipBackslashes: false }); -} -exports.getBaseDirectory = getBaseDirectory; -function hasGlobStar(pattern) { - return pattern.includes(GLOBSTAR); -} -exports.hasGlobStar = hasGlobStar; -function endsWithSlashGlobStar(pattern) { - return pattern.endsWith('/' + GLOBSTAR); -} -exports.endsWithSlashGlobStar = endsWithSlashGlobStar; -function isAffectDepthOfReadingPattern(pattern) { - const basename = path.basename(pattern); - return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); -} -exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; -function expandPatternsWithBraceExpansion(patterns) { - return patterns.reduce((collection, pattern) => { - return collection.concat(expandBraceExpansion(pattern)); - }, []); -} -exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; -function expandBraceExpansion(pattern) { - return micromatch.braces(pattern, { - expand: true, - nodupes: true - }); -} -exports.expandBraceExpansion = expandBraceExpansion; -function getPatternParts(pattern, options) { - let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); - /** - * The scan method returns an empty array in some cases. - * See micromatch/picomatch#58 for more details. - */ - if (parts.length === 0) { - parts = [pattern]; - } - /** - * The scan method does not return an empty part for the pattern with a forward slash. - * This is another part of micromatch/picomatch#58. - */ - if (parts[0].startsWith('/')) { - parts[0] = parts[0].slice(1); - parts.unshift(''); - } - return parts; -} -exports.getPatternParts = getPatternParts; -function makeRe(pattern, options) { - return micromatch.makeRe(pattern, options); -} -exports.makeRe = makeRe; -function convertPatternsToRe(patterns, options) { - return patterns.map((pattern) => makeRe(pattern, options)); -} -exports.convertPatternsToRe = convertPatternsToRe; -function matchAny(entry, patternsRe) { - return patternsRe.some((patternRe) => patternRe.test(entry)); -} -exports.matchAny = matchAny; +const {signalsByName} = __webpack_require__("../../node_modules/human-signals/build/src/main.js"); +const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => { + if (timedOut) { + return `timed out after ${timeout} milliseconds`; + } -/***/ }), + if (isCanceled) { + return 'was canceled'; + } -/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/stream.js": -/***/ (function(module, exports, __webpack_require__) { + if (errorCode !== undefined) { + return `failed with ${errorCode}`; + } -"use strict"; + if (signal !== undefined) { + return `was killed with ${signal} (${signalDescription})`; + } -Object.defineProperty(exports, "__esModule", { value: true }); -exports.merge = void 0; -const merge2 = __webpack_require__("../../node_modules/merge2/index.js"); -function merge(streams) { - const mergedStream = merge2(streams); - streams.forEach((stream) => { - stream.once('error', (error) => mergedStream.emit('error', error)); - }); - mergedStream.once('close', () => propagateCloseEventToSources(streams)); - mergedStream.once('end', () => propagateCloseEventToSources(streams)); - return mergedStream; -} -exports.merge = merge; -function propagateCloseEventToSources(streams) { - streams.forEach((stream) => stream.emit('close')); -} + if (exitCode !== undefined) { + return `failed with exit code ${exitCode}`; + } + return 'failed'; +}; -/***/ }), +const makeError = ({ + stdout, + stderr, + all, + error, + signal, + exitCode, + command, + timedOut, + isCanceled, + killed, + parsed: {options: {timeout}} +}) => { + // `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`. + // We normalize them to `undefined` + exitCode = exitCode === null ? undefined : exitCode; + signal = signal === null ? undefined : signal; + const signalDescription = signal === undefined ? undefined : signalsByName[signal].description; -/***/ "../../node_modules/del/node_modules/fast-glob/out/utils/string.js": -/***/ (function(module, exports, __webpack_require__) { + const errorCode = error && error.code; -"use strict"; + const prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}); + const execaMessage = `Command ${prefix}: ${command}`; + const isError = Object.prototype.toString.call(error) === '[object Error]'; + const shortMessage = isError ? `${execaMessage}\n${error.message}` : execaMessage; + const message = [shortMessage, stderr, stdout].filter(Boolean).join('\n'); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isEmpty = exports.isString = void 0; -function isString(input) { - return typeof input === 'string'; -} -exports.isString = isString; -function isEmpty(input) { - return input === ''; -} -exports.isEmpty = isEmpty; + if (isError) { + error.originalMessage = error.message; + error.message = message; + } else { + error = new Error(message); + } + + error.shortMessage = shortMessage; + error.command = command; + error.exitCode = exitCode; + error.signal = signal; + error.signalDescription = signalDescription; + error.stdout = stdout; + error.stderr = stderr; + + if (all !== undefined) { + error.all = all; + } + + if ('bufferedData' in error) { + delete error.bufferedData; + } + + error.failed = true; + error.timedOut = Boolean(timedOut); + error.isCanceled = isCanceled; + error.killed = killed && !timedOut; + + return error; +}; + +module.exports = makeError; /***/ }), -/***/ "../../node_modules/del/node_modules/globby/gitignore.js": +/***/ "../../node_modules/execa/lib/kill.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__("util"); -const fs = __webpack_require__("fs"); -const path = __webpack_require__("path"); -const fastGlob = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/index.js"); -const gitIgnore = __webpack_require__("../../node_modules/ignore/index.js"); -const slash = __webpack_require__("../../node_modules/slash/index.js"); +const os = __webpack_require__("os"); +const onExit = __webpack_require__("../../node_modules/signal-exit/index.js"); -const DEFAULT_IGNORE = [ - '**/node_modules/**', - '**/flow-typed/**', - '**/coverage/**', - '**/.git' -]; +const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5; -const readFileP = promisify(fs.readFile); +// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior +const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => { + const killResult = kill(signal); + setKillTimeout(kill, signal, options, killResult); + return killResult; +}; -const mapGitIgnorePatternTo = base => ignore => { - if (ignore.startsWith('!')) { - return '!' + path.posix.join(base, ignore.slice(1)); +const setKillTimeout = (kill, signal, options, killResult) => { + if (!shouldForceKill(signal, options, killResult)) { + return; } - return path.posix.join(base, ignore); -}; - -const parseGitIgnore = (content, options) => { - const base = slash(path.relative(options.cwd, path.dirname(options.fileName))); + const timeout = getForceKillAfterTimeout(options); + const t = setTimeout(() => { + kill('SIGKILL'); + }, timeout); - return content - .split(/\r?\n/) - .filter(Boolean) - .filter(line => !line.startsWith('#')) - .map(mapGitIgnorePatternTo(base)); + // Guarded because there's no `.unref()` when `execa` is used in the renderer + // process in Electron. This cannot be tested since we don't run tests in + // Electron. + // istanbul ignore else + if (t.unref) { + t.unref(); + } }; -const reduceIgnore = files => { - return files.reduce((ignores, file) => { - ignores.add(parseGitIgnore(file.content, { - cwd: file.cwd, - fileName: file.filePath - })); - return ignores; - }, gitIgnore()); +const shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => { + return isSigterm(signal) && forceKillAfterTimeout !== false && killResult; }; -const ensureAbsolutePathForCwd = (cwd, p) => { - if (path.isAbsolute(p)) { - if (p.startsWith(cwd)) { - return p; - } +const isSigterm = signal => { + return signal === os.constants.signals.SIGTERM || + (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM'); +}; - throw new Error(`Path ${p} is not in cwd ${cwd}`); +const getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => { + if (forceKillAfterTimeout === true) { + return DEFAULT_FORCE_KILL_TIMEOUT; } - return path.join(cwd, p); -}; + if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) { + throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`); + } -const getIsIgnoredPredecate = (ignores, cwd) => { - return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p)))); + return forceKillAfterTimeout; }; -const getFile = async (file, cwd) => { - const filePath = path.join(cwd, file); - const content = await readFileP(filePath, 'utf8'); +// `childProcess.cancel()` +const spawnedCancel = (spawned, context) => { + const killResult = spawned.kill(); - return { - cwd, - filePath, - content - }; + if (killResult) { + context.isCanceled = true; + } }; -const getFileSync = (file, cwd) => { - const filePath = path.join(cwd, file); - const content = fs.readFileSync(filePath, 'utf8'); - - return { - cwd, - filePath, - content - }; +const timeoutKill = (spawned, signal, reject) => { + spawned.kill(signal); + reject(Object.assign(new Error('Timed out'), {timedOut: true, signal})); }; -const normalizeOptions = ({ - ignore = [], - cwd = slash(process.cwd()) -} = {}) => { - return {ignore, cwd}; -}; +// `timeout` option handling +const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => { + if (timeout === 0 || timeout === undefined) { + return spawnedPromise; + } -module.exports = async options => { - options = normalizeOptions(options); + if (!Number.isFinite(timeout) || timeout < 0) { + throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`); + } - const paths = await fastGlob('**/.gitignore', { - ignore: DEFAULT_IGNORE.concat(options.ignore), - cwd: options.cwd + let timeoutId; + const timeoutPromise = new Promise((resolve, reject) => { + timeoutId = setTimeout(() => { + timeoutKill(spawned, killSignal, reject); + }, timeout); }); - const files = await Promise.all(paths.map(file => getFile(file, options.cwd))); - const ignores = reduceIgnore(files); + const safeSpawnedPromise = spawnedPromise.finally(() => { + clearTimeout(timeoutId); + }); - return getIsIgnoredPredecate(ignores, options.cwd); + return Promise.race([timeoutPromise, safeSpawnedPromise]); }; -module.exports.sync = options => { - options = normalizeOptions(options); +// `cleanup` option handling +const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => { + if (!cleanup || detached) { + return timedPromise; + } - const paths = fastGlob.sync('**/.gitignore', { - ignore: DEFAULT_IGNORE.concat(options.ignore), - cwd: options.cwd + const removeExitHandler = onExit(() => { + spawned.kill(); }); - const files = paths.map(file => getFileSync(file, options.cwd)); - const ignores = reduceIgnore(files); + return timedPromise.finally(() => { + removeExitHandler(); + }); +}; - return getIsIgnoredPredecate(ignores, options.cwd); +module.exports = { + spawnedKill, + spawnedCancel, + setupTimeout, + setExitHandler }; /***/ }), -/***/ "../../node_modules/del/node_modules/globby/index.js": +/***/ "../../node_modules/execa/lib/promise.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__("fs"); -const arrayUnion = __webpack_require__("../../node_modules/array-union/index.js"); -const merge2 = __webpack_require__("../../node_modules/merge2/index.js"); -const glob = __webpack_require__("../../node_modules/glob/glob.js"); -const fastGlob = __webpack_require__("../../node_modules/del/node_modules/fast-glob/out/index.js"); -const dirGlob = __webpack_require__("../../node_modules/dir-glob/index.js"); -const gitignore = __webpack_require__("../../node_modules/del/node_modules/globby/gitignore.js"); -const {FilterStream, UniqueStream} = __webpack_require__("../../node_modules/del/node_modules/globby/stream-utils.js"); - -const DEFAULT_FILTER = () => false; -const isNegative = pattern => pattern[0] === '!'; +const nativePromisePrototype = (async () => {})().constructor.prototype; +const descriptors = ['then', 'catch', 'finally'].map(property => [ + property, + Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property) +]); -const assertPatternsInput = patterns => { - if (!patterns.every(pattern => typeof pattern === 'string')) { - throw new TypeError('Patterns must be a string or an array of strings'); +// The return value is a mixin of `childProcess` and `Promise` +const mergePromise = (spawned, promise) => { + for (const [property, descriptor] of descriptors) { + // Starting the main `promise` is deferred to avoid consuming streams + const value = typeof promise === 'function' ? + (...args) => Reflect.apply(descriptor.value, promise(), args) : + descriptor.value.bind(promise); + + Reflect.defineProperty(spawned, property, {...descriptor, value}); } + + return spawned; }; -const checkCwdOption = (options = {}) => { - if (!options.cwd) { - return; - } +// Use promises instead of `child_process` events +const getSpawnedPromise = spawned => { + return new Promise((resolve, reject) => { + spawned.on('exit', (exitCode, signal) => { + resolve({exitCode, signal}); + }); - let stat; - try { - stat = fs.statSync(options.cwd); - } catch (_) { - return; - } + spawned.on('error', error => { + reject(error); + }); - if (!stat.isDirectory()) { - throw new Error('The `cwd` option must be a path to a directory'); - } + if (spawned.stdin) { + spawned.stdin.on('error', error => { + reject(error); + }); + } + }); }; -const getPathString = p => p.stats instanceof fs.Stats ? p.path : p; +module.exports = { + mergePromise, + getSpawnedPromise +}; -const generateGlobTasks = (patterns, taskOptions) => { - patterns = arrayUnion([].concat(patterns)); - assertPatternsInput(patterns); - checkCwdOption(taskOptions); - const globTasks = []; - taskOptions = { - ignore: [], - expandDirectories: true, - ...taskOptions - }; +/***/ }), - for (const [index, pattern] of patterns.entries()) { - if (isNegative(pattern)) { - continue; - } +/***/ "../../node_modules/execa/lib/stdio.js": +/***/ (function(module, exports, __webpack_require__) { - const ignore = patterns - .slice(index) - .filter(isNegative) - .map(pattern => pattern.slice(1)); +"use strict"; - const options = { - ...taskOptions, - ignore: taskOptions.ignore.concat(ignore) - }; +const aliases = ['stdin', 'stdout', 'stderr']; - globTasks.push({pattern, options}); +const hasAlias = opts => aliases.some(alias => opts[alias] !== undefined); + +const normalizeStdio = opts => { + if (!opts) { + return; } - return globTasks; -}; + const {stdio} = opts; -const globDirs = (task, fn) => { - let options = {}; - if (task.options.cwd) { - options.cwd = task.options.cwd; + if (stdio === undefined) { + return aliases.map(alias => opts[alias]); } - if (Array.isArray(task.options.expandDirectories)) { - options = { - ...options, - files: task.options.expandDirectories - }; - } else if (typeof task.options.expandDirectories === 'object') { - options = { - ...options, - ...task.options.expandDirectories - }; + if (hasAlias(opts)) { + throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map(alias => `\`${alias}\``).join(', ')}`); } - return fn(task.pattern, options); -}; - -const getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern]; - -const getFilterSync = options => { - return options && options.gitignore ? - gitignore.sync({cwd: options.cwd, ignore: options.ignore}) : - DEFAULT_FILTER; -}; + if (typeof stdio === 'string') { + return stdio; + } -const globToTask = task => glob => { - const {options} = task; - if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) { - options.ignore = dirGlob.sync(options.ignore); + if (!Array.isArray(stdio)) { + throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); } - return { - pattern: glob, - options - }; + const length = Math.max(stdio.length, aliases.length); + return Array.from({length}, (value, index) => stdio[index]); }; -module.exports = async (patterns, options) => { - const globTasks = generateGlobTasks(patterns, options); +module.exports = normalizeStdio; - const getFilter = async () => { - return options && options.gitignore ? - gitignore({cwd: options.cwd, ignore: options.ignore}) : - DEFAULT_FILTER; - }; +// `ipc` is pushed unless it is already present +module.exports.node = opts => { + const stdio = normalizeStdio(opts); - const getTasks = async () => { - const tasks = await Promise.all(globTasks.map(async task => { - const globs = await getPattern(task, dirGlob); - return Promise.all(globs.map(globToTask(task))); - })); + if (stdio === 'ipc') { + return 'ipc'; + } - return arrayUnion(...tasks); - }; + if (stdio === undefined || typeof stdio === 'string') { + return [stdio, stdio, stdio, 'ipc']; + } - const [filter, tasks] = await Promise.all([getFilter(), getTasks()]); - const paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options))); + if (stdio.includes('ipc')) { + return stdio; + } - return arrayUnion(...paths).filter(path_ => !filter(getPathString(path_))); + return [...stdio, 'ipc']; }; -module.exports.sync = (patterns, options) => { - const globTasks = generateGlobTasks(patterns, options); - - const tasks = globTasks.reduce((tasks, task) => { - const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); - return tasks.concat(newTask); - }, []); - const filter = getFilterSync(options); +/***/ }), - return tasks.reduce( - (matches, task) => arrayUnion(matches, fastGlob.sync(task.pattern, task.options)), - [] - ).filter(path_ => !filter(path_)); -}; +/***/ "../../node_modules/execa/lib/stream.js": +/***/ (function(module, exports, __webpack_require__) { -module.exports.stream = (patterns, options) => { - const globTasks = generateGlobTasks(patterns, options); +"use strict"; - const tasks = globTasks.reduce((tasks, task) => { - const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); - return tasks.concat(newTask); - }, []); +const isStream = __webpack_require__("../../node_modules/is-stream/index.js"); +const getStream = __webpack_require__("../../node_modules/get-stream/index.js"); +const mergeStream = __webpack_require__("../../node_modules/merge-stream/index.js"); - const filter = getFilterSync(options); - const filterStream = new FilterStream(p => !filter(p)); - const uniqueStream = new UniqueStream(); +// `input` option +const handleInput = (spawned, input) => { + // Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852 + // TODO: Remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0 + if (input === undefined || spawned.stdin === undefined) { + return; + } - return merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options))) - .pipe(filterStream) - .pipe(uniqueStream); + if (isStream(input)) { + input.pipe(spawned.stdin); + } else { + spawned.stdin.end(input); + } }; -module.exports.generateGlobTasks = generateGlobTasks; +// `all` interleaves `stdout` and `stderr` +const makeAllStream = (spawned, {all}) => { + if (!all || (!spawned.stdout && !spawned.stderr)) { + return; + } -module.exports.hasMagic = (patterns, options) => [] - .concat(patterns) - .some(pattern => glob.hasMagic(pattern, options)); + const mixed = mergeStream(); -module.exports.gitignore = gitignore; + if (spawned.stdout) { + mixed.add(spawned.stdout); + } + if (spawned.stderr) { + mixed.add(spawned.stderr); + } -/***/ }), + return mixed; +}; -/***/ "../../node_modules/del/node_modules/globby/stream-utils.js": -/***/ (function(module, exports, __webpack_require__) { +// On failure, `result.stdout|stderr|all` should contain the currently buffered stream +const getBufferedData = async (stream, streamPromise) => { + if (!stream) { + return; + } -"use strict"; + stream.destroy(); -const {Transform} = __webpack_require__("stream"); + try { + return await streamPromise; + } catch (error) { + return error.bufferedData; + } +}; -class ObjectTransform extends Transform { - constructor() { - super({ - objectMode: true - }); +const getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => { + if (!stream || !buffer) { + return; } -} -class FilterStream extends ObjectTransform { - constructor(filter) { - super(); - this._filter = filter; + if (encoding) { + return getStream(stream, {encoding, maxBuffer}); } - _transform(data, encoding, callback) { - if (this._filter(data)) { - this.push(data); - } + return getStream.buffer(stream, {maxBuffer}); +}; - callback(); - } -} +// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all) +const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => { + const stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer}); + const stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer}); + const allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2}); -class UniqueStream extends ObjectTransform { - constructor() { - super(); - this._pushed = new Set(); + try { + return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]); + } catch (error) { + return Promise.all([ + {error, signal: error.signal, timedOut: error.timedOut}, + getBufferedData(stdout, stdoutPromise), + getBufferedData(stderr, stderrPromise), + getBufferedData(all, allPromise) + ]); } +}; - _transform(data, encoding, callback) { - if (!this._pushed.has(data)) { - this.push(data); - this._pushed.add(data); - } - - callback(); +const validateInputSync = ({input}) => { + if (isStream(input)) { + throw new TypeError('The `input` option cannot be a stream in sync mode'); } -} +}; module.exports = { - FilterStream, - UniqueStream + handleInput, + makeAllStream, + getSpawnedResult, + validateInputSync }; + /***/ }), -/***/ "../../node_modules/del/node_modules/indent-string/index.js": +/***/ "../../node_modules/fastq/queue.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -module.exports = (string, count = 1, options) => { - options = { - indent: ' ', - includeEmptyLines: false, - ...options - }; - - if (typeof string !== 'string') { - throw new TypeError( - `Expected \`input\` to be a \`string\`, got \`${typeof string}\`` - ); - } - - if (typeof count !== 'number') { - throw new TypeError( - `Expected \`count\` to be a \`number\`, got \`${typeof count}\`` - ); - } +var reusify = __webpack_require__("../../node_modules/reusify/reusify.js") - if (typeof options.indent !== 'string') { - throw new TypeError( - `Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\`` - ); - } +function fastqueue (context, worker, concurrency) { + if (typeof context === 'function') { + concurrency = worker + worker = context + context = null + } - if (count === 0) { - return string; - } + var cache = reusify(Task) + var queueHead = null + var queueTail = null + var _running = 0 - const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm; + var self = { + push: push, + drain: noop, + saturated: noop, + pause: pause, + paused: false, + concurrency: concurrency, + running: running, + resume: resume, + idle: idle, + length: length, + unshift: unshift, + empty: noop, + kill: kill, + killAndDrain: killAndDrain + } - return string.replace(regex, options.indent.repeat(count)); -}; + return self + function running () { + return _running + } -/***/ }), + function pause () { + self.paused = true + } -/***/ "../../node_modules/del/node_modules/micromatch/index.js": -/***/ (function(module, exports, __webpack_require__) { + function length () { + var current = queueHead + var counter = 0 -"use strict"; + while (current) { + current = current.next + counter++ + } + return counter + } -const util = __webpack_require__("util"); -const braces = __webpack_require__("../../node_modules/braces/index.js"); -const picomatch = __webpack_require__("../../node_modules/picomatch/index.js"); -const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); -const isEmptyString = val => val === '' || val === './'; + function resume () { + if (!self.paused) return + self.paused = false + for (var i = 0; i < self.concurrency; i++) { + _running++ + release() + } + } -/** - * Returns an array of strings that match one or more glob patterns. - * - * ```js - * const mm = require('micromatch'); - * // mm(list, patterns[, options]); - * - * console.log(mm(['a.js', 'a.txt'], ['*.js'])); - * //=> [ 'a.js' ] - * ``` - * @param {String|Array} `list` List of strings to match. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) - * @return {Array} Returns an array of matches - * @summary false - * @api public - */ + function idle () { + return _running === 0 && self.length() === 0 + } -const micromatch = (list, patterns, options) => { - patterns = [].concat(patterns); - list = [].concat(list); + function push (value, done) { + var current = cache.get() - let omit = new Set(); - let keep = new Set(); - let items = new Set(); - let negatives = 0; + current.context = context + current.release = release + current.value = value + current.callback = done || noop - let onResult = state => { - items.add(state.output); - if (options && options.onResult) { - options.onResult(state); + if (_running === self.concurrency || self.paused) { + if (queueTail) { + queueTail.next = current + queueTail = current + } else { + queueHead = current + queueTail = current + self.saturated() + } + } else { + _running++ + worker.call(context, current.value, current.worked) } - }; - - for (let i = 0; i < patterns.length; i++) { - let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); - let negated = isMatch.state.negated || isMatch.state.negatedExtglob; - if (negated) negatives++; + } - for (let item of list) { - let matched = isMatch(item, true); + function unshift (value, done) { + var current = cache.get() - let match = negated ? !matched.isMatch : matched.isMatch; - if (!match) continue; + current.context = context + current.release = release + current.value = value + current.callback = done || noop - if (negated) { - omit.add(matched.output); + if (_running === self.concurrency || self.paused) { + if (queueHead) { + current.next = queueHead + queueHead = current } else { - omit.delete(matched.output); - keep.add(matched.output); + queueHead = current + queueTail = current + self.saturated() } + } else { + _running++ + worker.call(context, current.value, current.worked) } } - let result = negatives === patterns.length ? [...items] : [...keep]; - let matches = result.filter(item => !omit.has(item)); - - if (options && matches.length === 0) { - if (options.failglob === true) { - throw new Error(`No matches found for "${patterns.join(', ')}"`); + function release (holder) { + if (holder) { + cache.release(holder) } - - if (options.nonull === true || options.nullglob === true) { - return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns; + var next = queueHead + if (next) { + if (!self.paused) { + if (queueTail === queueHead) { + queueTail = null + } + queueHead = next.next + next.next = null + worker.call(context, next.value, next.worked) + if (queueTail === null) { + self.empty() + } + } else { + _running-- + } + } else if (--_running === 0) { + self.drain() } } - return matches; -}; + function kill () { + queueHead = null + queueTail = null + self.drain = noop + } -/** - * Backwards compatibility - */ + function killAndDrain () { + queueHead = null + queueTail = null + self.drain() + self.drain = noop + } +} -micromatch.match = micromatch; +function noop () {} -/** - * Returns a matcher function from the given glob `pattern` and `options`. - * The returned function takes a string to match as its only argument and returns - * true if the string is a match. - * - * ```js - * const mm = require('micromatch'); - * // mm.matcher(pattern[, options]); - * - * const isMatch = mm.matcher('*.!(*a)'); - * console.log(isMatch('a.a')); //=> false - * console.log(isMatch('a.b')); //=> true - * ``` - * @param {String} `pattern` Glob pattern - * @param {Object} `options` - * @return {Function} Returns a matcher function. - * @api public - */ +function Task () { + this.value = null + this.callback = noop + this.next = null + this.release = noop + this.context = null -micromatch.matcher = (pattern, options) => picomatch(pattern, options); + var self = this -/** - * Returns true if **any** of the given glob `patterns` match the specified `string`. - * - * ```js - * const mm = require('micromatch'); - * // mm.isMatch(string, patterns[, options]); - * - * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true - * console.log(mm.isMatch('a.a', 'b.*')); //=> false - * ``` - * @param {String} `str` The string to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `[options]` See available [options](#options). - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ + this.worked = function worked (err, result) { + var callback = self.callback + self.value = null + self.callback = noop + callback.call(self.context, err, result) + self.release(self) + } +} -micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); +module.exports = fastqueue -/** - * Backwards compatibility - */ -micromatch.any = micromatch.isMatch; +/***/ }), -/** - * Returns a list of strings that _**do not match any**_ of the given `patterns`. - * - * ```js - * const mm = require('micromatch'); - * // mm.not(list, patterns[, options]); +/***/ "../../node_modules/fill-range/index.js": +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/*! + * fill-range * - * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); - * //=> ['b.b', 'c.c'] - * ``` - * @param {Array} `list` Array of strings to match. - * @param {String|Array} `patterns` One or more glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array} Returns an array of strings that **do not match** the given patterns. - * @api public + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. */ -micromatch.not = (list, patterns, options = {}) => { - patterns = [].concat(patterns).map(String); - let result = new Set(); - let items = []; - let onResult = state => { - if (options.onResult) options.onResult(state); - items.push(state.output); - }; - let matches = micromatch(list, patterns, { ...options, onResult }); +const util = __webpack_require__("util"); +const toRegexRange = __webpack_require__("../../node_modules/to-regex-range/index.js"); - for (let item of items) { - if (!matches.includes(item)) { - result.add(item); - } - } - return [...result]; -}; +const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); -/** - * Returns true if the given `string` contains the given pattern. Similar - * to [.isMatch](#isMatch) but the pattern can match any part of the string. - * - * ```js - * var mm = require('micromatch'); - * // mm.contains(string, pattern[, options]); - * - * console.log(mm.contains('aa/bb/cc', '*b')); - * //=> true - * console.log(mm.contains('aa/bb/cc', '*d')); - * //=> false - * ``` - * @param {String} `str` The string to match. - * @param {String|Array} `patterns` Glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any of the patterns matches any part of `str`. - * @api public - */ +const transform = toNumber => { + return value => toNumber === true ? Number(value) : String(value); +}; -micromatch.contains = (str, pattern, options) => { - if (typeof str !== 'string') { - throw new TypeError(`Expected a string: "${util.inspect(str)}"`); - } +const isValidValue = value => { + return typeof value === 'number' || (typeof value === 'string' && value !== ''); +}; - if (Array.isArray(pattern)) { - return pattern.some(p => micromatch.contains(str, p, options)); - } +const isNumber = num => Number.isInteger(+num); - if (typeof pattern === 'string') { - if (isEmptyString(str) || isEmptyString(pattern)) { - return false; - } +const zeros = input => { + let value = `${input}`; + let index = -1; + if (value[0] === '-') value = value.slice(1); + if (value === '0') return false; + while (value[++index] === '0'); + return index > 0; +}; - if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) { - return true; - } +const stringify = (start, end, options) => { + if (typeof start === 'string' || typeof end === 'string') { + return true; } - - return micromatch.isMatch(str, pattern, { ...options, contains: true }); + return options.stringify === true; }; -/** - * Filter the keys of the given object with the given `glob` pattern - * and `options`. Does not attempt to match nested keys. If you need this feature, - * use [glob-object][] instead. - * - * ```js - * const mm = require('micromatch'); - * // mm.matchKeys(object, patterns[, options]); - * - * const obj = { aa: 'a', ab: 'b', ac: 'c' }; - * console.log(mm.matchKeys(obj, '*b')); - * //=> { ab: 'b' } - * ``` - * @param {Object} `object` The object with keys to filter. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Object} Returns an object with only keys that match the given patterns. - * @api public - */ +const pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === '-' ? '-' : ''; + if (dash) input = input.slice(1); + input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0')); + } + if (toNumber === false) { + return String(input); + } + return input; +}; -micromatch.matchKeys = (obj, patterns, options) => { - if (!utils.isObject(obj)) { - throw new TypeError('Expected the first argument to be an object'); +const toMaxLen = (input, maxLength) => { + let negative = input[0] === '-' ? '-' : ''; + if (negative) { + input = input.slice(1); + maxLength--; } - let keys = micromatch(Object.keys(obj), patterns, options); - let res = {}; - for (let key of keys) res[key] = obj[key]; - return res; + while (input.length < maxLength) input = '0' + input; + return negative ? ('-' + input) : input; }; -/** - * Returns true if some of the strings in the given `list` match any of the given glob `patterns`. - * - * ```js - * const mm = require('micromatch'); - * // mm.some(list, patterns[, options]); - * - * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); - * // true - * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); - * // false - * ``` - * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list` - * @api public - */ +const toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); -micromatch.some = (list, patterns, options) => { - let items = [].concat(list); + let prefix = options.capture ? '' : '?:'; + let positives = ''; + let negatives = ''; + let result; - for (let pattern of [].concat(patterns)) { - let isMatch = picomatch(String(pattern), options); - if (items.some(item => isMatch(item))) { - return true; - } + if (parts.positives.length) { + positives = parts.positives.join('|'); } - return false; -}; -/** - * Returns true if every string in the given `list` matches - * any of the given glob `patterns`. - * - * ```js - * const mm = require('micromatch'); - * // mm.every(list, patterns[, options]); - * - * console.log(mm.every('foo.js', ['foo.js'])); - * // true - * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); - * // true - * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); - * // false - * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); - * // false - * ``` - * @param {String|Array} `list` The string or array of strings to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list` - * @api public - */ + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join('|')})`; + } -micromatch.every = (list, patterns, options) => { - let items = [].concat(list); + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } - for (let pattern of [].concat(patterns)) { - let isMatch = picomatch(String(pattern), options); - if (!items.every(item => isMatch(item))) { - return false; - } + if (options.wrap) { + return `(${prefix}${result})`; } - return true; -}; -/** - * Returns true if **all** of the given `patterns` match - * the specified string. - * - * ```js - * const mm = require('micromatch'); - * // mm.all(string, patterns[, options]); - * - * console.log(mm.all('foo.js', ['foo.js'])); - * // true - * - * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); - * // false - * - * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); - * // true - * - * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); - * // true - * ``` - * @param {String|Array} `str` The string to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ + return result; +}; -micromatch.all = (str, patterns, options) => { - if (typeof str !== 'string') { - throw new TypeError(`Expected a string: "${util.inspect(str)}"`); +const toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange(a, b, { wrap: false, ...options }); } - return [].concat(patterns).every(p => picomatch(p, options)(str)); + let start = String.fromCharCode(a); + if (a === b) return start; + + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; }; -/** - * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. - * - * ```js - * const mm = require('micromatch'); - * // mm.capture(pattern, string[, options]); - * - * console.log(mm.capture('test/*.js', 'test/foo.js')); - * //=> ['foo'] - * console.log(mm.capture('test/*.js', 'foo/bar.css')); - * //=> null - * ``` - * @param {String} `glob` Glob pattern to use for matching. - * @param {String} `input` String to match - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`. - * @api public - */ +const toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap = options.wrap === true; + let prefix = options.capture ? '' : '?:'; + return wrap ? `(${prefix}${start.join('|')})` : start.join('|'); + } + return toRegexRange(start, end, options); +}; -micromatch.capture = (glob, input, options) => { - let posix = utils.isWindows(options); - let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); - let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); +const rangeError = (...args) => { + return new RangeError('Invalid range arguments: ' + util.inspect(...args)); +}; - if (match) { - return match.slice(1).map(v => v === void 0 ? '' : v); +const invalidRange = (start, end, options) => { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; +}; + +const invalidStep = (step, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step}" to be a number`); } + return []; }; -/** - * Create a regular expression from the given glob `pattern`. - * - * ```js - * const mm = require('micromatch'); - * // mm.makeRe(pattern[, options]); - * - * console.log(mm.makeRe('*.js')); - * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ - * ``` - * @param {String} `pattern` A glob pattern to convert to regex. - * @param {Object} `options` - * @return {RegExp} Returns a regex created from the given pattern. - * @api public - */ +const fillNumbers = (start, end, step = 1, options = {}) => { + let a = Number(start); + let b = Number(end); -micromatch.makeRe = (...args) => picomatch.makeRe(...args); + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; + } -/** - * Scan a glob pattern to separate the pattern into segments. Used - * by the [split](#split) method. - * - * ```js - * const mm = require('micromatch'); - * const state = mm.scan(pattern[, options]); - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {Object} Returns an object with - * @api public - */ + // fix negative zero + if (a === 0) a = 0; + if (b === 0) b = 0; -micromatch.scan = (...args) => picomatch.scan(...args); + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step); + step = Math.max(Math.abs(step), 1); -/** - * Parse a glob pattern to create the source string for a regular - * expression. - * - * ```js - * const mm = require('micromatch'); - * const state = mm(pattern[, options]); - * ``` - * @param {String} `glob` - * @param {Object} `options` - * @return {Object} Returns an object with useful properties and output to be used as regex source string. - * @api public - */ + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify(start, end, options) === false; + let format = options.transform || transform(toNumber); -micromatch.parse = (patterns, options) => { - let res = []; - for (let pattern of [].concat(patterns || [])) { - for (let str of braces(String(pattern), options)) { - res.push(picomatch.parse(str, options)); - } + if (options.toRegex && step === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); } - return res; -}; -/** - * Process the given brace `pattern`. - * - * ```js - * const { braces } = require('micromatch'); - * console.log(braces('foo/{a,b,c}/bar')); - * //=> [ 'foo/(a|b|c)/bar' ] - * - * console.log(braces('foo/{a,b,c}/bar', { expand: true })); - * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] - * ``` - * @param {String} `pattern` String with brace pattern to process. - * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. - * @return {Array} - * @api public - */ + let parts = { negatives: [], positives: [] }; + let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num)); + let range = []; + let index = 0; -micromatch.braces = (pattern, options) => { - if (typeof pattern !== 'string') throw new TypeError('Expected a string'); - if ((options && options.nobrace === true) || !/\{.*\}/.test(pattern)) { - return [pattern]; + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step > 1) { + push(a); + } else { + range.push(pad(format(a, index), maxLen, toNumber)); + } + a = descending ? a - step : a + step; + index++; } - return braces(pattern, options); -}; -/** - * Expand braces - */ + if (options.toRegex === true) { + return step > 1 + ? toSequence(parts, options) + : toRegex(range, null, { wrap: false, ...options }); + } -micromatch.braceExpand = (pattern, options) => { - if (typeof pattern !== 'string') throw new TypeError('Expected a string'); - return micromatch.braces(pattern, { ...options, expand: true }); + return range; }; -/** - * Expose micromatch - */ +const fillLetters = (start, end, step = 1, options = {}) => { + if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) { + return invalidRange(start, end, options); + } -module.exports = micromatch; + let format = options.transform || (val => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); -/***/ }), + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); -/***/ "../../node_modules/del/node_modules/p-map/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (options.toRegex && step === 1) { + return toRange(min, max, false, options); + } -"use strict"; + let range = []; + let index = 0; -const AggregateError = __webpack_require__("../../node_modules/del/node_modules/aggregate-error/index.js"); - -module.exports = async ( - iterable, - mapper, - { - concurrency = Infinity, - stopOnError = true - } = {} -) => { - return new Promise((resolve, reject) => { - if (typeof mapper !== 'function') { - throw new TypeError('Mapper function is required'); - } - - if (!(typeof concurrency === 'number' && concurrency >= 1)) { - throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${concurrency}\` (${typeof concurrency})`); - } + while (descending ? a >= b : a <= b) { + range.push(format(a, index)); + a = descending ? a - step : a + step; + index++; + } - const ret = []; - const errors = []; - const iterator = iterable[Symbol.iterator](); - let isRejected = false; - let isIterableDone = false; - let resolvingCount = 0; - let currentIndex = 0; + if (options.toRegex === true) { + return toRegex(range, null, { wrap: false, options }); + } - const next = () => { - if (isRejected) { - return; - } + return range; +}; - const nextItem = iterator.next(); - const i = currentIndex; - currentIndex++; +const fill = (start, end, step, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } - if (nextItem.done) { - isIterableDone = true; + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } - if (resolvingCount === 0) { - if (!stopOnError && errors.length !== 0) { - reject(new AggregateError(errors)); - } else { - resolve(ret); - } - } + if (typeof step === 'function') { + return fill(start, end, 1, { transform: step }); + } - return; - } + if (isObject(step)) { + return fill(start, end, 0, step); + } - resolvingCount++; + let opts = { ...options }; + if (opts.capture === true) opts.wrap = true; + step = step || opts.step || 1; - (async () => { - try { - const element = await nextItem.value; - ret[i] = await mapper(element, i); - resolvingCount--; - next(); - } catch (error) { - if (stopOnError) { - isRejected = true; - reject(error); - } else { - errors.push(error); - resolvingCount--; - next(); - } - } - })(); - }; + if (!isNumber(step)) { + if (step != null && !isObject(step)) return invalidStep(step, opts); + return fill(start, end, 1, step); + } - for (let i = 0; i < concurrency; i++) { - next(); + if (isNumber(start) && isNumber(end)) { + return fillNumbers(start, end, step, opts); + } - if (isIterableDone) { - break; - } - } - }); + return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); }; +module.exports = fill; + /***/ }), -/***/ "../../node_modules/detect-indent/index.js": +/***/ "../../node_modules/follow-redirects/debug.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; - +var debug; -// Detect either spaces or tabs but not both to properly handle tabs for indentation and spaces for alignment -const INDENT_REGEX = /^(?:( )+|\t+)/; +module.exports = function () { + if (!debug) { + try { + /* eslint global-require: off */ + debug = __webpack_require__("../../node_modules/debug/src/index.js")("follow-redirects"); + } + catch (error) { /* */ } + if (typeof debug !== "function") { + debug = function () { /* */ }; + } + } + debug.apply(null, arguments); +}; -const INDENT_TYPE_SPACE = 'space'; -const INDENT_TYPE_TAB = 'tab'; -// Make a Map that counts how many indents/unindents have occurred for a given size and how many lines follow a given indentation. -// The key is a concatenation of the indentation type (s = space and t = tab) and the size of the indents/unindents. -// -// indents = { -// t3: [1, 0], -// t4: [1, 5], -// s5: [1, 0], -// s12: [1, 0], -// } -function makeIndentsMap(string, ignoreSingleSpaces) { - const indents = new Map(); +/***/ }), - // Remember the size of previous line's indentation - let previousSize = 0; - let previousIndentType; +/***/ "../../node_modules/follow-redirects/index.js": +/***/ (function(module, exports, __webpack_require__) { - // Indents key (ident type + size of the indents/unindents) - let key; +var url = __webpack_require__("url"); +var URL = url.URL; +var http = __webpack_require__("http"); +var https = __webpack_require__("https"); +var Writable = __webpack_require__("stream").Writable; +var assert = __webpack_require__("assert"); +var debug = __webpack_require__("../../node_modules/follow-redirects/debug.js"); - for (const line of string.split(/\n/g)) { - if (!line) { - // Ignore empty lines - continue; - } +// Create handlers that pass events from native requests +var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; +var eventHandlers = Object.create(null); +events.forEach(function (event) { + eventHandlers[event] = function (arg1, arg2, arg3) { + this._redirectable.emit(event, arg1, arg2, arg3); + }; +}); - let indent; - let indentType; - let weight; - let entry; - const matches = line.match(INDENT_REGEX); +// Error types with codes +var RedirectionError = createErrorType( + "ERR_FR_REDIRECTION_FAILURE", + "Redirected request failed" +); +var TooManyRedirectsError = createErrorType( + "ERR_FR_TOO_MANY_REDIRECTS", + "Maximum number of redirects exceeded" +); +var MaxBodyLengthExceededError = createErrorType( + "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", + "Request body larger than maxBodyLength limit" +); +var WriteAfterEndError = createErrorType( + "ERR_STREAM_WRITE_AFTER_END", + "write after end" +); - if (matches === null) { - previousSize = 0; - previousIndentType = ''; - } else { - indent = matches[0].length; +// An HTTP(S) request that can be redirected +function RedirectableRequest(options, responseCallback) { + // Initialize the request + Writable.call(this); + this._sanitizeOptions(options); + this._options = options; + this._ended = false; + this._ending = false; + this._redirectCount = 0; + this._redirects = []; + this._requestBodyLength = 0; + this._requestBodyBuffers = []; - if (matches[1]) { - indentType = INDENT_TYPE_SPACE; - } else { - indentType = INDENT_TYPE_TAB; - } + // Attach a callback if passed + if (responseCallback) { + this.on("response", responseCallback); + } - // Ignore single space unless it's the only indent detected to prevent common false positives - if (ignoreSingleSpaces && indentType === INDENT_TYPE_SPACE && indent === 1) { - continue; - } + // React to responses of native requests + var self = this; + this._onNativeResponse = function (response) { + self._processResponse(response); + }; - if (indentType !== previousIndentType) { - previousSize = 0; - } + // Perform the first request + this._performRequest(); +} +RedirectableRequest.prototype = Object.create(Writable.prototype); - previousIndentType = indentType; +RedirectableRequest.prototype.abort = function () { + abortRequest(this._currentRequest); + this.emit("abort"); +}; - weight = 0; +// Writes buffered data to the current native request +RedirectableRequest.prototype.write = function (data, encoding, callback) { + // Writing is not allowed if end has been called + if (this._ending) { + throw new WriteAfterEndError(); + } - const indentDifference = indent - previousSize; - previousSize = indent; + // Validate input and shift parameters if necessary + if (!(typeof data === "string" || typeof data === "object" && ("length" in data))) { + throw new TypeError("data should be a string, Buffer or Uint8Array"); + } + if (typeof encoding === "function") { + callback = encoding; + encoding = null; + } - // Previous line have same indent? - if (indentDifference === 0) { - weight++; - // We use the key from previous loop - } else { - const absoluteIndentDifference = indentDifference > 0 ? indentDifference : -indentDifference; - key = encodeIndentsKey(indentType, absoluteIndentDifference); - } + // Ignore empty buffers, since writing them doesn't invoke the callback + // https://github.com/nodejs/node/issues/22066 + if (data.length === 0) { + if (callback) { + callback(); + } + return; + } + // Only write when we don't exceed the maximum body length + if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { + this._requestBodyLength += data.length; + this._requestBodyBuffers.push({ data: data, encoding: encoding }); + this._currentRequest.write(data, encoding, callback); + } + // Error when we exceed the maximum body length + else { + this.emit("error", new MaxBodyLengthExceededError()); + this.abort(); + } +}; - // Update the stats - entry = indents.get(key); +// Ends the current native request +RedirectableRequest.prototype.end = function (data, encoding, callback) { + // Shift parameters if necessary + if (typeof data === "function") { + callback = data; + data = encoding = null; + } + else if (typeof encoding === "function") { + callback = encoding; + encoding = null; + } - if (entry === undefined) { - entry = [1, 0]; // Init - } else { - entry = [++entry[0], entry[1] + weight]; - } + // Write data if needed and end + if (!data) { + this._ended = this._ending = true; + this._currentRequest.end(null, null, callback); + } + else { + var self = this; + var currentRequest = this._currentRequest; + this.write(data, encoding, function () { + self._ended = true; + currentRequest.end(null, null, callback); + }); + this._ending = true; + } +}; - indents.set(key, entry); - } - } +// Sets a header value on the current native request +RedirectableRequest.prototype.setHeader = function (name, value) { + this._options.headers[name] = value; + this._currentRequest.setHeader(name, value); +}; - return indents; -} +// Clears a header value on the current native request +RedirectableRequest.prototype.removeHeader = function (name) { + delete this._options.headers[name]; + this._currentRequest.removeHeader(name); +}; -// Encode the indent type and amount as a string (e.g. 's4') for use as a compound key in the indents Map. -function encodeIndentsKey(indentType, indentAmount) { - const typeCharacter = indentType === INDENT_TYPE_SPACE ? 's' : 't'; - return typeCharacter + String(indentAmount); -} +// Global timeout for all underlying requests +RedirectableRequest.prototype.setTimeout = function (msecs, callback) { + var self = this; -// Extract the indent type and amount from a key of the indents Map. -function decodeIndentsKey(indentsKey) { - const keyHasTypeSpace = indentsKey[0] === 's'; - const type = keyHasTypeSpace ? INDENT_TYPE_SPACE : INDENT_TYPE_TAB; + // Destroys the socket on timeout + function destroyOnTimeout(socket) { + socket.setTimeout(msecs); + socket.removeListener("timeout", socket.destroy); + socket.addListener("timeout", socket.destroy); + } - const amount = Number(indentsKey.slice(1)); + // Sets up a timer to trigger a timeout event + function startTimer(socket) { + if (self._timeout) { + clearTimeout(self._timeout); + } + self._timeout = setTimeout(function () { + self.emit("timeout"); + clearTimer(); + }, msecs); + destroyOnTimeout(socket); + } - return {type, amount}; -} + // Stops a timeout from triggering + function clearTimer() { + // Clear the timeout + if (self._timeout) { + clearTimeout(self._timeout); + self._timeout = null; + } -// Return the key (e.g. 's4') from the indents Map that represents the most common indent, -// or return undefined if there are no indents. -function getMostUsedKey(indents) { - let result; - let maxUsed = 0; - let maxWeight = 0; + // Clean up all attached listeners + self.removeListener("abort", clearTimer); + self.removeListener("error", clearTimer); + self.removeListener("response", clearTimer); + if (callback) { + self.removeListener("timeout", callback); + } + if (!self.socket) { + self._currentRequest.removeListener("socket", startTimer); + } + } - for (const [key, [usedCount, weight]] of indents) { - if (usedCount > maxUsed || (usedCount === maxUsed && weight > maxWeight)) { - maxUsed = usedCount; - maxWeight = weight; - result = key; - } - } + // Attach callback if passed + if (callback) { + this.on("timeout", callback); + } - return result; -} + // Start the timer if or when the socket is opened + if (this.socket) { + startTimer(this.socket); + } + else { + this._currentRequest.once("socket", startTimer); + } -function makeIndentString(type, amount) { - const indentCharacter = type === INDENT_TYPE_SPACE ? ' ' : '\t'; - return indentCharacter.repeat(amount); -} + // Clean up on events + this.on("socket", destroyOnTimeout); + this.on("abort", clearTimer); + this.on("error", clearTimer); + this.on("response", clearTimer); -module.exports = string => { - if (typeof string !== 'string') { - throw new TypeError('Expected a string'); - } + return this; +}; - // Identify indents while skipping single space indents to avoid common edge cases (e.g. code comments) - // If no indents are identified, run again and include all indents for comprehensive detection - let indents = makeIndentsMap(string, true); - if (indents.size === 0) { - indents = makeIndentsMap(string, false); - } +// Proxy all other public ClientRequest methods +[ + "flushHeaders", "getHeader", + "setNoDelay", "setSocketKeepAlive", +].forEach(function (method) { + RedirectableRequest.prototype[method] = function (a, b) { + return this._currentRequest[method](a, b); + }; +}); - const keyOfMostUsedIndent = getMostUsedKey(indents); +// Proxy all public ClientRequest properties +["aborted", "connection", "socket"].forEach(function (property) { + Object.defineProperty(RedirectableRequest.prototype, property, { + get: function () { return this._currentRequest[property]; }, + }); +}); - let type; - let amount = 0; - let indent = ''; +RedirectableRequest.prototype._sanitizeOptions = function (options) { + // Ensure headers are always present + if (!options.headers) { + options.headers = {}; + } - if (keyOfMostUsedIndent !== undefined) { - ({type, amount} = decodeIndentsKey(keyOfMostUsedIndent)); - indent = makeIndentString(type, amount); - } + // Since http.request treats host as an alias of hostname, + // but the url module interprets host as hostname plus port, + // eliminate the host property to avoid confusion. + if (options.host) { + // Use hostname if set, because it has precedence + if (!options.hostname) { + options.hostname = options.host; + } + delete options.host; + } - return { - amount, - type, - indent - }; + // Complete the URL object when necessary + if (!options.pathname && options.path) { + var searchPos = options.path.indexOf("?"); + if (searchPos < 0) { + options.pathname = options.path; + } + else { + options.pathname = options.path.substring(0, searchPos); + options.search = options.path.substring(searchPos); + } + } }; -/***/ }), - -/***/ "../../node_modules/detect-newline/index.js": -/***/ (function(module, exports, __webpack_require__) { +// Executes the next native request (initial or redirect) +RedirectableRequest.prototype._performRequest = function () { + // Load the native protocol + var protocol = this._options.protocol; + var nativeProtocol = this._options.nativeProtocols[protocol]; + if (!nativeProtocol) { + this.emit("error", new TypeError("Unsupported protocol " + protocol)); + return; + } -"use strict"; + // If specified, use the agent corresponding to the protocol + // (HTTP and HTTPS use different types of agents) + if (this._options.agents) { + var scheme = protocol.substr(0, protocol.length - 1); + this._options.agent = this._options.agents[scheme]; + } + // Create the native request + var request = this._currentRequest = + nativeProtocol.request(this._options, this._onNativeResponse); + this._currentUrl = url.format(this._options); -const detectNewline = string => { - if (typeof string !== 'string') { - throw new TypeError('Expected a string'); - } + // Set up event handlers + request._redirectable = this; + for (var e = 0; e < events.length; e++) { + request.on(events[e], eventHandlers[events[e]]); + } - const newlines = string.match(/(?:\r?\n)/g) || []; - - if (newlines.length === 0) { - return; - } - - const crlf = newlines.filter(newline => newline === '\r\n').length; - const lf = newlines.length - crlf; - - return crlf > lf ? '\r\n' : '\n'; + // End a redirected request + // (The first request must be ended explicitly with RedirectableRequest#end) + if (this._isRedirect) { + // Write the request entity and end. + var i = 0; + var self = this; + var buffers = this._requestBodyBuffers; + (function writeNext(error) { + // Only write if this request has not been redirected yet + /* istanbul ignore else */ + if (request === self._currentRequest) { + // Report any write errors + /* istanbul ignore if */ + if (error) { + self.emit("error", error); + } + // Write the next buffer if there are still left + else if (i < buffers.length) { + var buffer = buffers[i++]; + /* istanbul ignore else */ + if (!request.finished) { + request.write(buffer.data, buffer.encoding, writeNext); + } + } + // End the request if `end` has been called on us + else if (self._ended) { + request.end(); + } + } + }()); + } }; -module.exports = detectNewline; -module.exports.graceful = string => (typeof string === 'string' && detectNewline(string)) || '\n'; - - -/***/ }), - -/***/ "../../node_modules/dir-glob/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const path = __webpack_require__("path"); -const pathType = __webpack_require__("../../node_modules/path-type/index.js"); - -const getExtensions = extensions => extensions.length > 1 ? `{${extensions.join(',')}}` : extensions[0]; +// Processes a response from the current native request +RedirectableRequest.prototype._processResponse = function (response) { + // Store the redirected response + var statusCode = response.statusCode; + if (this._options.trackRedirects) { + this._redirects.push({ + url: this._currentUrl, + headers: response.headers, + statusCode: statusCode, + }); + } -const getPath = (filepath, cwd) => { - const pth = filepath[0] === '!' ? filepath.slice(1) : filepath; - return path.isAbsolute(pth) ? pth : path.join(cwd, pth); -}; + // RFC7231§6.4: The 3xx (Redirection) class of status code indicates + // that further action needs to be taken by the user agent in order to + // fulfill the request. If a Location header field is provided, + // the user agent MAY automatically redirect its request to the URI + // referenced by the Location field value, + // even if the specific status code is not understood. -const addExtensions = (file, extensions) => { - if (path.extname(file)) { - return `**/${file}`; - } + // If the response is not a redirect; return it as-is + var location = response.headers.location; + if (!location || this._options.followRedirects === false || + statusCode < 300 || statusCode >= 400) { + response.responseUrl = this._currentUrl; + response.redirects = this._redirects; + this.emit("response", response); - return `**/${file}.${getExtensions(extensions)}`; -}; + // Clean up + this._requestBodyBuffers = []; + return; + } -const getGlob = (directory, options) => { - if (options.files && !Array.isArray(options.files)) { - throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof options.files}\``); - } + // The response is a redirect, so abort the current request + abortRequest(this._currentRequest); + // Discard the remainder of the response to avoid waiting for data + response.destroy(); - if (options.extensions && !Array.isArray(options.extensions)) { - throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof options.extensions}\``); - } + // RFC7231§6.4: A client SHOULD detect and intervene + // in cyclical redirections (i.e., "infinite" redirection loops). + if (++this._redirectCount > this._options.maxRedirects) { + this.emit("error", new TooManyRedirectsError()); + return; + } - if (options.files && options.extensions) { - return options.files.map(x => path.posix.join(directory, addExtensions(x, options.extensions))); - } + // RFC7231§6.4: Automatic redirection needs to done with + // care for methods not known to be safe, […] + // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change + // the request method from POST to GET for the subsequent request. + if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || + // RFC7231§6.4.4: The 303 (See Other) status code indicates that + // the server is redirecting the user agent to a different resource […] + // A user agent can perform a retrieval request targeting that URI + // (a GET or HEAD request if using HTTP) […] + (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) { + this._options.method = "GET"; + // Drop a possible entity and headers related to it + this._requestBodyBuffers = []; + removeMatchingHeaders(/^content-/i, this._options.headers); + } - if (options.files) { - return options.files.map(x => path.posix.join(directory, `**/${x}`)); - } + // Drop the Host header, as the redirect might lead to a different host + var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); - if (options.extensions) { - return [path.posix.join(directory, `**/*.${getExtensions(options.extensions)}`)]; - } + // If the redirect is relative, carry over the host of the last request + var currentUrlParts = url.parse(this._currentUrl); + var currentHost = currentHostHeader || currentUrlParts.host; + var currentUrl = /^\w+:/.test(location) ? this._currentUrl : + url.format(Object.assign(currentUrlParts, { host: currentHost })); - return [path.posix.join(directory, '**')]; -}; + // Determine the URL of the redirection + var redirectUrl; + try { + redirectUrl = url.resolve(currentUrl, location); + } + catch (cause) { + this.emit("error", new RedirectionError(cause)); + return; + } -module.exports = async (input, options) => { - options = { - cwd: process.cwd(), - ...options - }; + // Create the redirected request + debug("redirecting to", redirectUrl); + this._isRedirect = true; + var redirectUrlParts = url.parse(redirectUrl); + Object.assign(this._options, redirectUrlParts); - if (typeof options.cwd !== 'string') { - throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``); - } + // Drop confidential headers when redirecting to a less secure protocol + // or to a different domain that is not a superdomain + if (redirectUrlParts.protocol !== currentUrlParts.protocol && + redirectUrlParts.protocol !== "https:" || + redirectUrlParts.host !== currentHost && + !isSubdomain(redirectUrlParts.host, currentHost)) { + removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers); + } - const globs = await Promise.all([].concat(input).map(async x => { - const isDirectory = await pathType.isDirectory(getPath(x, options.cwd)); - return isDirectory ? getGlob(x, options) : x; - })); + // Evaluate the beforeRedirect callback + if (typeof this._options.beforeRedirect === "function") { + var responseDetails = { headers: response.headers }; + try { + this._options.beforeRedirect.call(null, this._options, responseDetails); + } + catch (err) { + this.emit("error", err); + return; + } + this._sanitizeOptions(this._options); + } - return [].concat.apply([], globs); // eslint-disable-line prefer-spread + // Perform the redirected request + try { + this._performRequest(); + } + catch (cause) { + this.emit("error", new RedirectionError(cause)); + } }; -module.exports.sync = (input, options) => { - options = { - cwd: process.cwd(), - ...options - }; +// Wraps the key/value object of protocols with redirect functionality +function wrap(protocols) { + // Default settings + var exports = { + maxRedirects: 21, + maxBodyLength: 10 * 1024 * 1024, + }; - if (typeof options.cwd !== 'string') { - throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof options.cwd}\``); - } + // Wrap each protocol + var nativeProtocols = {}; + Object.keys(protocols).forEach(function (scheme) { + var protocol = scheme + ":"; + var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; + var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); - const globs = [].concat(input).map(x => pathType.isDirectorySync(getPath(x, options.cwd)) ? getGlob(x, options) : x); + // Executes a request, following redirects + function request(input, options, callback) { + // Parse parameters + if (typeof input === "string") { + var urlStr = input; + try { + input = urlToOptions(new URL(urlStr)); + } + catch (err) { + /* istanbul ignore next */ + input = url.parse(urlStr); + } + } + else if (URL && (input instanceof URL)) { + input = urlToOptions(input); + } + else { + callback = options; + options = input; + input = { protocol: protocol }; + } + if (typeof options === "function") { + callback = options; + options = null; + } - return [].concat.apply([], globs); // eslint-disable-line prefer-spread -}; + // Set defaults + options = Object.assign({ + maxRedirects: exports.maxRedirects, + maxBodyLength: exports.maxBodyLength, + }, input, options); + options.nativeProtocols = nativeProtocols; + assert.equal(options.protocol, protocol, "protocol mismatch"); + debug("options", options); + return new RedirectableRequest(options, callback); + } -/***/ }), + // Executes a GET request, following redirects + function get(input, options, callback) { + var wrappedRequest = wrappedProtocol.request(input, options, callback); + wrappedRequest.end(); + return wrappedRequest; + } -/***/ "../../node_modules/duplexer/index.js": -/***/ (function(module, exports, __webpack_require__) { + // Expose the properties on the wrapped protocol + Object.defineProperties(wrappedProtocol, { + request: { value: request, configurable: true, enumerable: true, writable: true }, + get: { value: get, configurable: true, enumerable: true, writable: true }, + }); + }); + return exports; +} -var Stream = __webpack_require__("stream") -var writeMethods = ["write", "end", "destroy"] -var readMethods = ["resume", "pause"] -var readEvents = ["data", "close"] -var slice = Array.prototype.slice +/* istanbul ignore next */ +function noop() { /* empty */ } -module.exports = duplex +// from https://github.com/nodejs/node/blob/master/lib/internal/url.js +function urlToOptions(urlObject) { + var options = { + protocol: urlObject.protocol, + hostname: urlObject.hostname.startsWith("[") ? + /* istanbul ignore next */ + urlObject.hostname.slice(1, -1) : + urlObject.hostname, + hash: urlObject.hash, + search: urlObject.search, + pathname: urlObject.pathname, + path: urlObject.pathname + urlObject.search, + href: urlObject.href, + }; + if (urlObject.port !== "") { + options.port = Number(urlObject.port); + } + return options; +} -function forEach (arr, fn) { - if (arr.forEach) { - return arr.forEach(fn) +function removeMatchingHeaders(regex, headers) { + var lastValue; + for (var header in headers) { + if (regex.test(header)) { + lastValue = headers[header]; + delete headers[header]; } + } + return (lastValue === null || typeof lastValue === "undefined") ? + undefined : String(lastValue).trim(); +} - for (var i = 0; i < arr.length; i++) { - fn(arr[i], i) +function createErrorType(code, defaultMessage) { + function CustomError(cause) { + Error.captureStackTrace(this, this.constructor); + if (!cause) { + this.message = defaultMessage; } + else { + this.message = defaultMessage + ": " + cause.message; + this.cause = cause; + } + } + CustomError.prototype = new Error(); + CustomError.prototype.constructor = CustomError; + CustomError.prototype.name = "Error [" + code + "]"; + CustomError.prototype.code = code; + return CustomError; } -function duplex(writer, reader) { - var stream = new Stream() - var ended = false - - forEach(writeMethods, proxyWriter) +function abortRequest(request) { + for (var e = 0; e < events.length; e++) { + request.removeListener(events[e], eventHandlers[events[e]]); + } + request.on("error", noop); + request.abort(); +} - forEach(readMethods, proxyReader) +function isSubdomain(subdomain, domain) { + const dot = subdomain.length - domain.length - 1; + return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); +} - forEach(readEvents, proxyStream) +// Exports +module.exports = wrap({ http: http, https: https }); +module.exports.wrap = wrap; - reader.on("end", handleEnd) - writer.on("drain", function() { - stream.emit("drain") - }) +/***/ }), - writer.on("error", reemit) - reader.on("error", reemit) +/***/ "../../node_modules/fs.realpath/index.js": +/***/ (function(module, exports, __webpack_require__) { - stream.writable = writer.writable - stream.readable = reader.readable +module.exports = realpath +realpath.realpath = realpath +realpath.sync = realpathSync +realpath.realpathSync = realpathSync +realpath.monkeypatch = monkeypatch +realpath.unmonkeypatch = unmonkeypatch - return stream +var fs = __webpack_require__("fs") +var origRealpath = fs.realpath +var origRealpathSync = fs.realpathSync - function proxyWriter(methodName) { - stream[methodName] = method +var version = process.version +var ok = /^v[0-5]\./.test(version) +var old = __webpack_require__("../../node_modules/fs.realpath/old.js") - function method() { - return writer[methodName].apply(writer, arguments) - } - } +function newError (er) { + return er && er.syscall === 'realpath' && ( + er.code === 'ELOOP' || + er.code === 'ENOMEM' || + er.code === 'ENAMETOOLONG' + ) +} - function proxyReader(methodName) { - stream[methodName] = method +function realpath (p, cache, cb) { + if (ok) { + return origRealpath(p, cache, cb) + } - function method() { - stream.emit(methodName) - var func = reader[methodName] - if (func) { - return func.apply(reader, arguments) - } - reader.emit(methodName) - } + if (typeof cache === 'function') { + cb = cache + cache = null + } + origRealpath(p, cache, function (er, result) { + if (newError(er)) { + old.realpath(p, cache, cb) + } else { + cb(er, result) } + }) +} - function proxyStream(methodName) { - reader.on(methodName, reemit) +function realpathSync (p, cache) { + if (ok) { + return origRealpathSync(p, cache) + } - function reemit() { - var args = slice.call(arguments) - args.unshift(methodName) - stream.emit.apply(stream, args) - } + try { + return origRealpathSync(p, cache) + } catch (er) { + if (newError(er)) { + return old.realpathSync(p, cache) + } else { + throw er } + } +} - function handleEnd() { - if (ended) { - return - } - ended = true - var args = slice.call(arguments) - args.unshift("end") - stream.emit.apply(stream, args) - } +function monkeypatch () { + fs.realpath = realpath + fs.realpathSync = realpathSync +} - function reemit(err) { - stream.emit("error", err) - } +function unmonkeypatch () { + fs.realpath = origRealpath + fs.realpathSync = origRealpathSync } /***/ }), -/***/ "../../node_modules/end-of-stream/index.js": +/***/ "../../node_modules/fs.realpath/old.js": /***/ (function(module, exports, __webpack_require__) { -var once = __webpack_require__("../../node_modules/once/once.js"); - -var noop = function() {}; - -var isRequest = function(stream) { - return stream.setHeader && typeof stream.abort === 'function'; -}; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. -var isChildProcess = function(stream) { - return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3 -}; +var pathModule = __webpack_require__("path"); +var isWindows = process.platform === 'win32'; +var fs = __webpack_require__("fs"); -var eos = function(stream, opts, callback) { - if (typeof opts === 'function') return eos(stream, null, opts); - if (!opts) opts = {}; +// JavaScript implementation of realpath, ported from node pre-v6 - callback = once(callback || noop); +var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); - var ws = stream._writableState; - var rs = stream._readableState; - var readable = opts.readable || (opts.readable !== false && stream.readable); - var writable = opts.writable || (opts.writable !== false && stream.writable); - var cancelled = false; +function rethrow() { + // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and + // is fairly slow to generate. + var callback; + if (DEBUG) { + var backtrace = new Error; + callback = debugCallback; + } else + callback = missingCallback; - var onlegacyfinish = function() { - if (!stream.writable) onfinish(); - }; + return callback; - var onfinish = function() { - writable = false; - if (!readable) callback.call(stream); - }; - - var onend = function() { - readable = false; - if (!writable) callback.call(stream); - }; + function debugCallback(err) { + if (err) { + backtrace.message = err.message; + err = backtrace; + missingCallback(err); + } + } - var onexit = function(exitCode) { - callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null); - }; + function missingCallback(err) { + if (err) { + if (process.throwDeprecation) + throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs + else if (!process.noDeprecation) { + var msg = 'fs: missing callback ' + (err.stack || err.message); + if (process.traceDeprecation) + console.trace(msg); + else + console.error(msg); + } + } + } +} - var onerror = function(err) { - callback.call(stream, err); - }; +function maybeCallback(cb) { + return typeof cb === 'function' ? cb : rethrow(); +} - var onclose = function() { - process.nextTick(onclosenexttick); - }; +var normalize = pathModule.normalize; - var onclosenexttick = function() { - if (cancelled) return; - if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close')); - if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close')); - }; +// Regexp that finds the next partion of a (partial) path +// result is [base_with_slash, base], e.g. ['somedir/', 'somedir'] +if (isWindows) { + var nextPartRe = /(.*?)(?:[\/\\]+|$)/g; +} else { + var nextPartRe = /(.*?)(?:[\/]+|$)/g; +} - var onrequest = function() { - stream.req.on('finish', onfinish); - }; +// Regex to find the device root, including trailing slash. E.g. 'c:\\'. +if (isWindows) { + var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; +} else { + var splitRootRe = /^[\/]*/; +} - if (isRequest(stream)) { - stream.on('complete', onfinish); - stream.on('abort', onclose); - if (stream.req) onrequest(); - else stream.on('request', onrequest); - } else if (writable && !ws) { // legacy streams - stream.on('end', onlegacyfinish); - stream.on('close', onlegacyfinish); - } +exports.realpathSync = function realpathSync(p, cache) { + // make p is absolute + p = pathModule.resolve(p); - if (isChildProcess(stream)) stream.on('exit', onexit); + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return cache[p]; + } - stream.on('end', onend); - stream.on('finish', onfinish); - if (opts.error !== false) stream.on('error', onerror); - stream.on('close', onclose); + var original = p, + seenLinks = {}, + knownHard = {}; - return function() { - cancelled = true; - stream.removeListener('complete', onfinish); - stream.removeListener('abort', onclose); - stream.removeListener('request', onrequest); - if (stream.req) stream.req.removeListener('finish', onfinish); - stream.removeListener('end', onlegacyfinish); - stream.removeListener('close', onlegacyfinish); - stream.removeListener('finish', onfinish); - stream.removeListener('exit', onexit); - stream.removeListener('end', onend); - stream.removeListener('error', onerror); - stream.removeListener('close', onclose); - }; -}; + // current character position in p + var pos; + // the partial path so far, including a trailing slash if any + var current; + // the partial path without a trailing slash (except when pointing at a root) + var base; + // the partial path scanned in the previous round, with slash + var previous; -module.exports = eos; + start(); + function start() { + // Skip over roots + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ''; -/***/ }), + // On windows, check that the root exists. On unix there is no need. + if (isWindows && !knownHard[base]) { + fs.lstatSync(base); + knownHard[base] = true; + } + } -/***/ "../../node_modules/error-ex/index.js": -/***/ (function(module, exports, __webpack_require__) { + // walk down the path, swapping out linked pathparts for their real + // values + // NB: p.length changes. + while (pos < p.length) { + // find the next part + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; -"use strict"; + // continue if not a symlink + if (knownHard[base] || (cache && cache[base] === base)) { + continue; + } + var resolvedLink; + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + // some known symbolic link. no need to stat again. + resolvedLink = cache[base]; + } else { + var stat = fs.lstatSync(base); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) cache[base] = base; + continue; + } -var util = __webpack_require__("util"); -var isArrayish = __webpack_require__("../../node_modules/is-arrayish/index.js"); + // read the link if it wasn't read before + // dev/ino always return 0 on windows, so skip the check. + var linkTarget = null; + if (!isWindows) { + var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + linkTarget = seenLinks[id]; + } + } + if (linkTarget === null) { + fs.statSync(base); + linkTarget = fs.readlinkSync(base); + } + resolvedLink = pathModule.resolve(previous, linkTarget); + // track this, if given a cache. + if (cache) cache[base] = resolvedLink; + if (!isWindows) seenLinks[id] = linkTarget; + } -var errorEx = function errorEx(name, properties) { - if (!name || name.constructor !== String) { - properties = name || {}; - name = Error.name; - } + // resolve the link, then start over + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } - var errorExError = function ErrorEXError(message) { - if (!this) { - return new ErrorEXError(message); - } + if (cache) cache[original] = p; - message = message instanceof Error - ? message.message - : (message || this.message); + return p; +}; - Error.call(this, message); - Error.captureStackTrace(this, errorExError); - this.name = name; +exports.realpath = function realpath(p, cache, cb) { + if (typeof cb !== 'function') { + cb = maybeCallback(cache); + cache = null; + } - Object.defineProperty(this, 'message', { - configurable: true, - enumerable: false, - get: function () { - var newMessage = message.split(/\r?\n/g); + // make p is absolute + p = pathModule.resolve(p); - for (var key in properties) { - if (!properties.hasOwnProperty(key)) { - continue; - } + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return process.nextTick(cb.bind(null, null, cache[p])); + } - var modifier = properties[key]; + var original = p, + seenLinks = {}, + knownHard = {}; - if ('message' in modifier) { - newMessage = modifier.message(this[key], newMessage) || newMessage; - if (!isArrayish(newMessage)) { - newMessage = [newMessage]; - } - } - } + // current character position in p + var pos; + // the partial path so far, including a trailing slash if any + var current; + // the partial path without a trailing slash (except when pointing at a root) + var base; + // the partial path scanned in the previous round, with slash + var previous; - return newMessage.join('\n'); - }, - set: function (v) { - message = v; - } - }); + start(); - var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack'); - var stackGetter = stackDescriptor.get; - var stackValue = stackDescriptor.value; - delete stackDescriptor.value; - delete stackDescriptor.writable; + function start() { + // Skip over roots + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ''; - stackDescriptor.get = function () { - var stack = (stackGetter) - ? stackGetter.call(this).split(/\r?\n+/g) - : stackValue.split(/\r?\n+/g); + // On windows, check that the root exists. On unix there is no need. + if (isWindows && !knownHard[base]) { + fs.lstat(base, function(err) { + if (err) return cb(err); + knownHard[base] = true; + LOOP(); + }); + } else { + process.nextTick(LOOP); + } + } - // starting in Node 7, the stack builder caches the message. - // just replace it. - stack[0] = this.name + ': ' + this.message; + // walk down the path, swapping out linked pathparts for their real + // values + function LOOP() { + // stop if scanned past end of path + if (pos >= p.length) { + if (cache) cache[original] = p; + return cb(null, p); + } - var lineCount = 1; - for (var key in properties) { - if (!properties.hasOwnProperty(key)) { - continue; - } + // find the next part + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; - var modifier = properties[key]; + // continue if not a symlink + if (knownHard[base] || (cache && cache[base] === base)) { + return process.nextTick(LOOP); + } - if ('line' in modifier) { - var line = modifier.line(this[key]); - if (line) { - stack.splice(lineCount++, 0, ' ' + line); - } - } + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + // known symbolic link. no need to stat again. + return gotResolvedLink(cache[base]); + } - if ('stack' in modifier) { - modifier.stack(this[key], stack); - } - } + return fs.lstat(base, gotStat); + } - return stack.join('\n'); - }; + function gotStat(err, stat) { + if (err) return cb(err); - Object.defineProperty(this, 'stack', stackDescriptor); - }; + // if not a symlink, skip to the next path part + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) cache[base] = base; + return process.nextTick(LOOP); + } - if (Object.setPrototypeOf) { - Object.setPrototypeOf(errorExError.prototype, Error.prototype); - Object.setPrototypeOf(errorExError, Error); - } else { - util.inherits(errorExError, Error); - } + // stat & read the link if not read before + // call gotTarget as soon as the link target is known + // dev/ino always return 0 on windows, so skip the check. + if (!isWindows) { + var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + return gotTarget(null, seenLinks[id], base); + } + } + fs.stat(base, function(err) { + if (err) return cb(err); - return errorExError; -}; + fs.readlink(base, function(err, target) { + if (!isWindows) seenLinks[id] = target; + gotTarget(err, target); + }); + }); + } -errorEx.append = function (str, def) { - return { - message: function (v, message) { - v = v || def; + function gotTarget(err, target, base) { + if (err) return cb(err); - if (v) { - message[0] += ' ' + str.replace('%s', v.toString()); - } + var resolvedLink = pathModule.resolve(previous, target); + if (cache) cache[base] = resolvedLink; + gotResolvedLink(resolvedLink); + } - return message; - } - }; + function gotResolvedLink(resolvedLink) { + // resolve the link, then start over + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } }; -errorEx.line = function (str, def) { - return { - line: function (v) { - v = v || def; - if (v) { - return str.replace('%s', v.toString()); - } +/***/ }), - return null; - } - }; -}; +/***/ "../../node_modules/function-bind/implementation.js": +/***/ (function(module, exports, __webpack_require__) { -module.exports = errorEx; +"use strict"; -/***/ }), +/* eslint no-invalid-this: 1 */ -/***/ "../../node_modules/escape-string-regexp/index.js": -/***/ (function(module, exports, __webpack_require__) { +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var slice = Array.prototype.slice; +var toStr = Object.prototype.toString; +var funcType = '[object Function]'; -"use strict"; +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.call(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slice.call(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return this; + } else { + return target.apply( + that, + args.concat(slice.call(arguments)) + ); + } + }; + var boundLength = Math.max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs.push('$' + i); + } -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } - return str.replace(matchOperatorsRe, '\\$&'); + return bound; }; /***/ }), -/***/ "../../node_modules/execa/index.js": +/***/ "../../node_modules/function-bind/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const path = __webpack_require__("path"); -const childProcess = __webpack_require__("child_process"); -const crossSpawn = __webpack_require__("../../node_modules/cross-spawn/index.js"); -const stripFinalNewline = __webpack_require__("../../node_modules/strip-final-newline/index.js"); -const npmRunPath = __webpack_require__("../../node_modules/npm-run-path/index.js"); -const onetime = __webpack_require__("../../node_modules/onetime/index.js"); -const makeError = __webpack_require__("../../node_modules/execa/lib/error.js"); -const normalizeStdio = __webpack_require__("../../node_modules/execa/lib/stdio.js"); -const {spawnedKill, spawnedCancel, setupTimeout, setExitHandler} = __webpack_require__("../../node_modules/execa/lib/kill.js"); -const {handleInput, getSpawnedResult, makeAllStream, validateInputSync} = __webpack_require__("../../node_modules/execa/lib/stream.js"); -const {mergePromise, getSpawnedPromise} = __webpack_require__("../../node_modules/execa/lib/promise.js"); -const {joinCommand, parseCommand} = __webpack_require__("../../node_modules/execa/lib/command.js"); - -const DEFAULT_MAX_BUFFER = 1000 * 1000 * 100; -const getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => { - const env = extendEnv ? {...process.env, ...envOption} : envOption; +var implementation = __webpack_require__("../../node_modules/function-bind/implementation.js"); - if (preferLocal) { - return npmRunPath.env({env, cwd: localDir, execPath}); - } +module.exports = Function.prototype.bind || implementation; - return env; -}; -const handleArguments = (file, args, options = {}) => { - const parsed = crossSpawn._parse(file, args, options); - file = parsed.command; - args = parsed.args; - options = parsed.options; +/***/ }), - options = { - maxBuffer: DEFAULT_MAX_BUFFER, - buffer: true, - stripFinalNewline: true, - extendEnv: true, - preferLocal: false, - localDir: options.cwd || process.cwd(), - execPath: process.execPath, - encoding: 'utf8', - reject: true, - cleanup: true, - all: false, - windowsHide: true, - ...options - }; +/***/ "../../node_modules/get-stream/buffer-stream.js": +/***/ (function(module, exports, __webpack_require__) { - options.env = getEnv(options); +"use strict"; - options.stdio = normalizeStdio(options); +const {PassThrough: PassThroughStream} = __webpack_require__("stream"); - if (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') { - // #116 - args.unshift('/q'); - } +module.exports = options => { + options = {...options}; - return {file, args, options, parsed}; -}; + const {array} = options; + let {encoding} = options; + const isBuffer = encoding === 'buffer'; + let objectMode = false; -const handleOutput = (options, value, error) => { - if (typeof value !== 'string' && !Buffer.isBuffer(value)) { - // When `execa.sync()` errors, we normalize it to '' to mimic `execa()` - return error === undefined ? undefined : ''; + if (array) { + objectMode = !(encoding || isBuffer); + } else { + encoding = encoding || 'utf8'; } - if (options.stripFinalNewline) { - return stripFinalNewline(value); + if (isBuffer) { + encoding = null; } - return value; -}; - -const execa = (file, args, options) => { - const parsed = handleArguments(file, args, options); - const command = joinCommand(file, args); + const stream = new PassThroughStream({objectMode}); - let spawned; - try { - spawned = childProcess.spawn(parsed.file, parsed.args, parsed.options); - } catch (error) { - // Ensure the returned error is always both a promise and a child process - const dummySpawned = new childProcess.ChildProcess(); - const errorPromise = Promise.reject(makeError({ - error, - stdout: '', - stderr: '', - all: '', - command, - parsed, - timedOut: false, - isCanceled: false, - killed: false - })); - return mergePromise(dummySpawned, errorPromise); + if (encoding) { + stream.setEncoding(encoding); } - const spawnedPromise = getSpawnedPromise(spawned); - const timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise); - const processDone = setExitHandler(spawned, parsed.options, timedPromise); - - const context = {isCanceled: false}; - - spawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned)); - spawned.cancel = spawnedCancel.bind(null, spawned, context); - - const handlePromise = async () => { - const [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone); - const stdout = handleOutput(parsed.options, stdoutResult); - const stderr = handleOutput(parsed.options, stderrResult); - const all = handleOutput(parsed.options, allResult); + let length = 0; + const chunks = []; - if (error || exitCode !== 0 || signal !== null) { - const returnedError = makeError({ - error, - exitCode, - signal, - stdout, - stderr, - all, - command, - parsed, - timedOut, - isCanceled: context.isCanceled, - killed: spawned.killed - }); + stream.on('data', chunk => { + chunks.push(chunk); - if (!parsed.options.reject) { - return returnedError; - } + if (objectMode) { + length = chunks.length; + } else { + length += chunk.length; + } + }); - throw returnedError; + stream.getBufferedValue = () => { + if (array) { + return chunks; } - return { - command, - exitCode: 0, - stdout, - stderr, - all, - failed: false, - timedOut: false, - isCanceled: false, - killed: false - }; + return isBuffer ? Buffer.concat(chunks, length) : chunks.join(''); }; - const handlePromiseOnce = onetime(handlePromise); - - crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed); - - handleInput(spawned, parsed.options.input); - - spawned.all = makeAllStream(spawned, parsed.options); + stream.getBufferedLength = () => length; - return mergePromise(spawned, handlePromiseOnce); + return stream; }; -module.exports = execa; - -module.exports.sync = (file, args, options) => { - const parsed = handleArguments(file, args, options); - const command = joinCommand(file, args); - validateInputSync(parsed.options); +/***/ }), - let result; - try { - result = childProcess.spawnSync(parsed.file, parsed.args, parsed.options); - } catch (error) { - throw makeError({ - error, - stdout: '', - stderr: '', - all: '', - command, - parsed, - timedOut: false, - isCanceled: false, - killed: false - }); - } +/***/ "../../node_modules/get-stream/index.js": +/***/ (function(module, exports, __webpack_require__) { - const stdout = handleOutput(parsed.options, result.stdout, result.error); - const stderr = handleOutput(parsed.options, result.stderr, result.error); +"use strict"; - if (result.error || result.status !== 0 || result.signal !== null) { - const error = makeError({ - stdout, - stderr, - error: result.error, - signal: result.signal, - exitCode: result.status, - command, - parsed, - timedOut: result.error && result.error.code === 'ETIMEDOUT', - isCanceled: false, - killed: result.signal !== null - }); +const pump = __webpack_require__("../../node_modules/pump/index.js"); +const bufferStream = __webpack_require__("../../node_modules/get-stream/buffer-stream.js"); - if (!parsed.options.reject) { - return error; - } +class MaxBufferError extends Error { + constructor() { + super('maxBuffer exceeded'); + this.name = 'MaxBufferError'; + } +} - throw error; +async function getStream(inputStream, options) { + if (!inputStream) { + return Promise.reject(new Error('Expected a stream')); } - return { - command, - exitCode: 0, - stdout, - stderr, - failed: false, - timedOut: false, - isCanceled: false, - killed: false + options = { + maxBuffer: Infinity, + ...options }; -}; -module.exports.command = (command, options) => { - const [file, ...args] = parseCommand(command); - return execa(file, args, options); -}; + const {maxBuffer} = options; -module.exports.commandSync = (command, options) => { - const [file, ...args] = parseCommand(command); - return execa.sync(file, args, options); -}; + let stream; + await new Promise((resolve, reject) => { + const rejectPromise = error => { + if (error) { // A null check + error.bufferedData = stream.getBufferedValue(); + } -module.exports.node = (scriptPath, args, options = {}) => { - if (args && !Array.isArray(args) && typeof args === 'object') { - options = args; - args = []; - } + reject(error); + }; - const stdio = normalizeStdio.node(options); + stream = pump(inputStream, bufferStream(options), error => { + if (error) { + rejectPromise(error); + return; + } - const {nodePath = process.execPath, nodeOptions = process.execArgv} = options; + resolve(); + }); - return execa( - nodePath, - [ - ...nodeOptions, - scriptPath, - ...(Array.isArray(args) ? args : []) - ], - { - ...options, - stdin: undefined, - stdout: undefined, - stderr: undefined, - stdio, - shell: false - } - ); -}; + stream.on('data', () => { + if (stream.getBufferedLength() > maxBuffer) { + rejectPromise(new MaxBufferError()); + } + }); + }); + + return stream.getBufferedValue(); +} + +module.exports = getStream; +// TODO: Remove this for the next major release +module.exports.default = getStream; +module.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'}); +module.exports.array = (stream, options) => getStream(stream, {...options, array: true}); +module.exports.MaxBufferError = MaxBufferError; /***/ }), -/***/ "../../node_modules/execa/lib/command.js": +/***/ "../../node_modules/getopts/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const SPACES_REGEXP = / +/g; - -const joinCommand = (file, args = []) => { - if (!Array.isArray(args)) { - return file; - } - return [file, ...args].join(' '); -}; +const EMPTYARR = [] +const SHORTSPLIT = /$|[!-@[-`{-~][\s\S]*/g +const isArray = Array.isArray -// Allow spaces to be escaped by a backslash if not meant as a delimiter -const handleEscaping = (tokens, token, index) => { - if (index === 0) { - return [token]; - } +const parseValue = function(any) { + if (any === "") return "" + if (any === "false") return false + const maybe = Number(any) + return maybe * 0 === 0 ? maybe : any +} - const previousToken = tokens[tokens.length - 1]; +const parseAlias = function(aliases) { + let out = {}, + key, + alias, + prev, + len, + any, + i, + k - if (previousToken.endsWith('\\')) { - return [...tokens.slice(0, -1), `${previousToken.slice(0, -1)} ${token}`]; - } + for (key in aliases) { + any = aliases[key] + alias = out[key] = isArray(any) ? any : [any] - return [...tokens, token]; -}; + for (i = 0, len = alias.length; i < len; i++) { + prev = out[alias[i]] = [key] -// Handle `execa.command()` -const parseCommand = command => { - return command - .trim() - .split(SPACES_REGEXP) - .reduce(handleEscaping, []); -}; + for (k = 0; k < len; k++) { + if (i !== k) prev.push(alias[k]) + } + } + } -module.exports = { - joinCommand, - parseCommand -}; + return out +} +const parseDefault = function(aliases, defaults) { + let out = {}, + key, + alias, + value, + len, + i -/***/ }), + for (key in defaults) { + value = defaults[key] + alias = aliases[key] -/***/ "../../node_modules/execa/lib/error.js": -/***/ (function(module, exports, __webpack_require__) { + out[key] = value -"use strict"; + if (alias === undefined) { + aliases[key] = EMPTYARR + } else { + for (i = 0, len = alias.length; i < len; i++) { + out[alias[i]] = value + } + } + } -const {signalsByName} = __webpack_require__("../../node_modules/human-signals/build/src/main.js"); + return out +} -const getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => { - if (timedOut) { - return `timed out after ${timeout} milliseconds`; - } +const parseOptions = function(aliases, options, value) { + let out = {}, + key, + alias, + len, + end, + i, + k - if (isCanceled) { - return 'was canceled'; - } + if (options !== undefined) { + for (i = 0, len = options.length; i < len; i++) { + key = options[i] + alias = aliases[key] - if (errorCode !== undefined) { - return `failed with ${errorCode}`; - } + out[key] = value - if (signal !== undefined) { - return `was killed with ${signal} (${signalDescription})`; - } + if (alias === undefined) { + aliases[key] = EMPTYARR + } else { + for (k = 0, end = alias.length; k < end; k++) { + out[alias[k]] = value + } + } + } + } - if (exitCode !== undefined) { - return `failed with exit code ${exitCode}`; - } + return out +} - return 'failed'; -}; +const write = function(out, key, value, aliases, unknown) { + let i, + prev, + alias = aliases[key], + len = alias === undefined ? -1 : alias.length -const makeError = ({ - stdout, - stderr, - all, - error, - signal, - exitCode, - command, - timedOut, - isCanceled, - killed, - parsed: {options: {timeout}} -}) => { - // `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`. - // We normalize them to `undefined` - exitCode = exitCode === null ? undefined : exitCode; - signal = signal === null ? undefined : signal; - const signalDescription = signal === undefined ? undefined : signalsByName[signal].description; + if (len >= 0 || unknown === undefined || unknown(key)) { + prev = out[key] - const errorCode = error && error.code; + if (prev === undefined) { + out[key] = value + } else { + if (isArray(prev)) { + prev.push(value) + } else { + out[key] = [prev, value] + } + } - const prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}); - const execaMessage = `Command ${prefix}: ${command}`; - const isError = Object.prototype.toString.call(error) === '[object Error]'; - const shortMessage = isError ? `${execaMessage}\n${error.message}` : execaMessage; - const message = [shortMessage, stderr, stdout].filter(Boolean).join('\n'); + for (i = 0; i < len; i++) { + out[alias[i]] = out[key] + } + } +} - if (isError) { - error.originalMessage = error.message; - error.message = message; - } else { - error = new Error(message); - } +const getopts = function(argv, opts) { + let unknown = (opts = opts || {}).unknown, + aliases = parseAlias(opts.alias), + strings = parseOptions(aliases, opts.string, ""), + values = parseDefault(aliases, opts.default), + bools = parseOptions(aliases, opts.boolean, false), + stopEarly = opts.stopEarly, + _ = [], + out = { _ }, + i = 0, + k = 0, + len = argv.length, + key, + arg, + end, + match, + value - error.shortMessage = shortMessage; - error.command = command; - error.exitCode = exitCode; - error.signal = signal; - error.signalDescription = signalDescription; - error.stdout = stdout; - error.stderr = stderr; + for (; i < len; i++) { + arg = argv[i] - if (all !== undefined) { - error.all = all; - } + if (arg[0] !== "-" || arg === "-") { + if (stopEarly) while (i < len) _.push(argv[i++]) + else _.push(arg) + } else if (arg === "--") { + while (++i < len) _.push(argv[i]) + } else if (arg[1] === "-") { + end = arg.indexOf("=", 2) + if (arg[2] === "n" && arg[3] === "o" && arg[4] === "-") { + key = arg.slice(5, end >= 0 ? end : undefined) + value = false + } else if (end >= 0) { + key = arg.slice(2, end) + value = + bools[key] !== undefined || + (strings[key] === undefined + ? parseValue(arg.slice(end + 1)) + : arg.slice(end + 1)) + } else { + key = arg.slice(2) + value = + bools[key] !== undefined || + (len === i + 1 || argv[i + 1][0] === "-" + ? strings[key] === undefined + ? true + : "" + : strings[key] === undefined + ? parseValue(argv[++i]) + : argv[++i]) + } + write(out, key, value, aliases, unknown) + } else { + SHORTSPLIT.lastIndex = 2 + match = SHORTSPLIT.exec(arg) + end = match.index + value = match[0] - if ('bufferedData' in error) { - delete error.bufferedData; - } + for (k = 1; k < end; k++) { + write( + out, + (key = arg[k]), + k + 1 < end + ? strings[key] === undefined || + arg.substring(k + 1, (k = end)) + value + : value === "" + ? len === i + 1 || argv[i + 1][0] === "-" + ? strings[key] === undefined || "" + : bools[key] !== undefined || + (strings[key] === undefined ? parseValue(argv[++i]) : argv[++i]) + : bools[key] !== undefined || + (strings[key] === undefined ? parseValue(value) : value), + aliases, + unknown + ) + } + } + } - error.failed = true; - error.timedOut = Boolean(timedOut); - error.isCanceled = isCanceled; - error.killed = killed && !timedOut; + for (key in values) if (out[key] === undefined) out[key] = values[key] + for (key in bools) if (out[key] === undefined) out[key] = false + for (key in strings) if (out[key] === undefined) out[key] = "" - return error; -}; + return out +} -module.exports = makeError; +module.exports = getopts /***/ }), -/***/ "../../node_modules/execa/lib/kill.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const os = __webpack_require__("os"); -const onExit = __webpack_require__("../../node_modules/signal-exit/index.js"); +/***/ "../../node_modules/git-hooks-list/index.json": +/***/ (function(module) { -const DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5; +module.exports = JSON.parse("[\"applypatch-msg\",\"pre-applypatch\",\"post-applypatch\",\"pre-commit\",\"pre-merge-commit\",\"prepare-commit-msg\",\"commit-msg\",\"post-commit\",\"pre-rebase\",\"post-checkout\",\"post-merge\",\"pre-push\",\"pre-receive\",\"update\",\"post-receive\",\"post-update\",\"push-to-checkout\",\"pre-auto-gc\",\"post-rewrite\",\"sendemail-validate\",\"fsmonitor-watchman\",\"p4-pre-submit\",\"post-index-change\"]"); -// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior -const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => { - const killResult = kill(signal); - setKillTimeout(kill, signal, options, killResult); - return killResult; -}; +/***/ }), -const setKillTimeout = (kill, signal, options, killResult) => { - if (!shouldForceKill(signal, options, killResult)) { - return; - } +/***/ "../../node_modules/glob-parent/index.js": +/***/ (function(module, exports, __webpack_require__) { - const timeout = getForceKillAfterTimeout(options); - const t = setTimeout(() => { - kill('SIGKILL'); - }, timeout); +"use strict"; - // Guarded because there's no `.unref()` when `execa` is used in the renderer - // process in Electron. This cannot be tested since we don't run tests in - // Electron. - // istanbul ignore else - if (t.unref) { - t.unref(); - } -}; -const shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => { - return isSigterm(signal) && forceKillAfterTimeout !== false && killResult; -}; +var isGlob = __webpack_require__("../../node_modules/is-glob/index.js"); +var pathPosixDirname = __webpack_require__("path").posix.dirname; +var isWin32 = __webpack_require__("os").platform() === 'win32'; -const isSigterm = signal => { - return signal === os.constants.signals.SIGTERM || - (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM'); -}; +var slash = '/'; +var backslash = /\\/g; +var enclosure = /[\{\[].*[\}\]]$/; +var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; +var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; -const getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => { - if (forceKillAfterTimeout === true) { - return DEFAULT_FORCE_KILL_TIMEOUT; - } +/** + * @param {string} str + * @param {Object} opts + * @param {boolean} [opts.flipBackslashes=true] + * @returns {string} + */ +module.exports = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); - if (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) { - throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${forceKillAfterTimeout}\` (${typeof forceKillAfterTimeout})`); - } + // flip windows path separators + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } - return forceKillAfterTimeout; -}; + // special case for strings ending in enclosure containing path separator + if (enclosure.test(str)) { + str += slash; + } -// `childProcess.cancel()` -const spawnedCancel = (spawned, context) => { - const killResult = spawned.kill(); + // preserves full path in case of trailing path separator + str += 'a'; - if (killResult) { - context.isCanceled = true; - } -}; + // remove path parts that are globby + do { + str = pathPosixDirname(str); + } while (isGlob(str) || globby.test(str)); -const timeoutKill = (spawned, signal, reject) => { - spawned.kill(signal); - reject(Object.assign(new Error('Timed out'), {timedOut: true, signal})); + // remove escape chars and return result + return str.replace(escaped, '$1'); }; -// `timeout` option handling -const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => { - if (timeout === 0 || timeout === undefined) { - return spawnedPromise; - } - - if (!Number.isFinite(timeout) || timeout < 0) { - throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${timeout}\` (${typeof timeout})`); - } - let timeoutId; - const timeoutPromise = new Promise((resolve, reject) => { - timeoutId = setTimeout(() => { - timeoutKill(spawned, killSignal, reject); - }, timeout); - }); +/***/ }), - const safeSpawnedPromise = spawnedPromise.finally(() => { - clearTimeout(timeoutId); - }); +/***/ "../../node_modules/glob/common.js": +/***/ (function(module, exports, __webpack_require__) { - return Promise.race([timeoutPromise, safeSpawnedPromise]); -}; +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored -// `cleanup` option handling -const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => { - if (!cleanup || detached) { - return timedPromise; - } +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} - const removeExitHandler = onExit(() => { - spawned.kill(); - }); +var fs = __webpack_require__("fs") +var path = __webpack_require__("path") +var minimatch = __webpack_require__("../../node_modules/minimatch/minimatch.js") +var isAbsolute = __webpack_require__("../../node_modules/path-is-absolute/index.js") +var Minimatch = minimatch.Minimatch - return timedPromise.finally(() => { - removeExitHandler(); - }); -}; +function alphasort (a, b) { + return a.localeCompare(b, 'en') +} -module.exports = { - spawnedKill, - spawnedCancel, - setupTimeout, - setExitHandler -}; +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] -/***/ }), + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} -/***/ "../../node_modules/execa/lib/promise.js": -/***/ (function(module, exports, __webpack_require__) { +// ignore patterns are always in dot:true mode. +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern, { dot: true }) + } -"use strict"; + return { + matcher: new Minimatch(pattern, { dot: true }), + gmatcher: gmatcher + } +} +function setopts (self, pattern, options) { + if (!options) + options = {} -const nativePromisePrototype = (async () => {})().constructor.prototype; -const descriptors = ['then', 'catch', 'finally'].map(property => [ - property, - Reflect.getOwnPropertyDescriptor(nativePromisePrototype, property) -]); + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } -// The return value is a mixin of `childProcess` and `Promise` -const mergePromise = (spawned, promise) => { - for (const [property, descriptor] of descriptors) { - // Starting the main `promise` is deferred to avoid consuming streams - const value = typeof promise === 'function' ? - (...args) => Reflect.apply(descriptor.value, promise(), args) : - descriptor.value.bind(promise); + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + self.absolute = !!options.absolute + self.fs = options.fs || fs - Reflect.defineProperty(spawned, property, {...descriptor, value}); - } + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) - return spawned; -}; + setupIgnores(self, options) -// Use promises instead of `child_process` events -const getSpawnedPromise = spawned => { - return new Promise((resolve, reject) => { - spawned.on('exit', (exitCode, signal) => { - resolve({exitCode, signal}); - }); + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = path.resolve(options.cwd) + self.changedCwd = self.cwd !== cwd + } - spawned.on('error', error => { - reject(error); - }); + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") - if (spawned.stdin) { - spawned.stdin.on('error', error => { - reject(error); - }); - } - }); -}; + // TODO: is an absolute `cwd` supposed to be resolved against `root`? + // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test') + self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd) + if (process.platform === "win32") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/") + self.nomount = !!options.nomount -module.exports = { - mergePromise, - getSpawnedPromise -}; + // disable comments and negation in Minimatch. + // Note that they are not supported in Glob itself anyway. + options.nonegate = true + options.nocomment = true + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) -/***/ }), + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } -/***/ "../../node_modules/execa/lib/stdio.js": -/***/ (function(module, exports, __webpack_require__) { + if (!nou) + all = Object.keys(all) -"use strict"; + if (!self.nosort) + all = all.sort(alphasort) -const aliases = ['stdin', 'stdout', 'stderr']; + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + var notDir = !(/\/$/.test(e)) + var c = self.cache[e] || self.cache[makeAbs(self, e)] + if (notDir && c) + notDir = c !== 'DIR' && !Array.isArray(c) + return notDir + }) + } + } -const hasAlias = opts => aliases.some(alias => opts[alias] !== undefined); + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) -const normalizeStdio = opts => { - if (!opts) { - return; - } + self.found = all +} - const {stdio} = opts; +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' - if (stdio === undefined) { - return aliases.map(alias => opts[alias]); - } + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) - if (hasAlias(opts)) { - throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${aliases.map(alias => `\`${alias}\``).join(', ')}`); - } + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } - if (typeof stdio === 'string') { - return stdio; - } + return m +} - if (!Array.isArray(stdio)) { - throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); - } +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } - const length = Math.max(stdio.length, aliases.length); - return Array.from({length}, (value, index) => stdio[index]); -}; + if (process.platform === 'win32') + abs = abs.replace(/\\/g, '/') -module.exports = normalizeStdio; + return abs +} -// `ipc` is pushed unless it is already present -module.exports.node = opts => { - const stdio = normalizeStdio(opts); - if (stdio === 'ipc') { - return 'ipc'; - } +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false - if (stdio === undefined || typeof stdio === 'string') { - return [stdio, stdio, stdio, 'ipc']; - } + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} - if (stdio.includes('ipc')) { - return stdio; - } +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false - return [...stdio, 'ipc']; -}; + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} /***/ }), -/***/ "../../node_modules/execa/lib/stream.js": +/***/ "../../node_modules/glob/glob.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. -const isStream = __webpack_require__("../../node_modules/is-stream/index.js"); -const getStream = __webpack_require__("../../node_modules/get-stream/index.js"); -const mergeStream = __webpack_require__("../../node_modules/merge-stream/index.js"); +module.exports = glob -// `input` option -const handleInput = (spawned, input) => { - // Checking for stdin is workaround for https://github.com/nodejs/node/issues/26852 - // TODO: Remove `|| spawned.stdin === undefined` once we drop support for Node.js <=12.2.0 - if (input === undefined || spawned.stdin === undefined) { - return; - } +var rp = __webpack_require__("../../node_modules/fs.realpath/index.js") +var minimatch = __webpack_require__("../../node_modules/minimatch/minimatch.js") +var Minimatch = minimatch.Minimatch +var inherits = __webpack_require__("../../node_modules/inherits/inherits.js") +var EE = __webpack_require__("events").EventEmitter +var path = __webpack_require__("path") +var assert = __webpack_require__("assert") +var isAbsolute = __webpack_require__("../../node_modules/path-is-absolute/index.js") +var globSync = __webpack_require__("../../node_modules/glob/sync.js") +var common = __webpack_require__("../../node_modules/glob/common.js") +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = __webpack_require__("../../node_modules/inflight/inflight.js") +var util = __webpack_require__("util") +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored - if (isStream(input)) { - input.pipe(spawned.stdin); - } else { - spawned.stdin.end(input); - } -}; +var once = __webpack_require__("../../node_modules/once/once.js") -// `all` interleaves `stdout` and `stderr` -const makeAllStream = (spawned, {all}) => { - if (!all || (!spawned.stdout && !spawned.stderr)) { - return; - } +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} - const mixed = mergeStream(); + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } - if (spawned.stdout) { - mixed.add(spawned.stdout); - } + return new Glob(pattern, options, cb) +} - if (spawned.stderr) { - mixed.add(spawned.stderr); - } +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync - return mixed; -}; +// old api surface +glob.glob = glob -// On failure, `result.stdout|stderr|all` should contain the currently buffered stream -const getBufferedData = async (stream, streamPromise) => { - if (!stream) { - return; - } +function extend (origin, add) { + if (add === null || typeof add !== 'object') { + return origin + } - stream.destroy(); + var keys = Object.keys(add) + var i = keys.length + while (i--) { + origin[keys[i]] = add[keys[i]] + } + return origin +} - try { - return await streamPromise; - } catch (error) { - return error.bufferedData; - } -}; +glob.hasMagic = function (pattern, options_) { + var options = extend({}, options_) + options.noprocess = true -const getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => { - if (!stream || !buffer) { - return; - } + var g = new Glob(pattern, options) + var set = g.minimatch.set - if (encoding) { - return getStream(stream, {encoding, maxBuffer}); - } + if (!pattern) + return false - return getStream.buffer(stream, {maxBuffer}); -}; + if (set.length > 1) + return true -// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all) -const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => { - const stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer}); - const stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer}); - const allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2}); + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } - try { - return await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]); - } catch (error) { - return Promise.all([ - {error, signal: error.signal, timedOut: error.timedOut}, - getBufferedData(stdout, stdoutPromise), - getBufferedData(stderr, stderrPromise), - getBufferedData(all, allPromise) - ]); - } -}; + return false +} -const validateInputSync = ({input}) => { - if (isStream(input)) { - throw new TypeError('The `input` option cannot be a stream in sync mode'); - } -}; +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } -module.exports = { - handleInput, - makeAllStream, - getSpawnedResult, - validateInputSync -}; + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + setopts(this, pattern, options) + this._didRealPath = false + // process each pattern in the minimatch set + var n = this.minimatch.set.length -/***/ }), + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) -/***/ "../../node_modules/expand-brackets/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } -"use strict"; + var self = this + this._processing = 0 + this._emitQueue = [] + this._processQueue = [] + this.paused = false -/** - * Local dependencies - */ + if (this.noprocess) + return this -var compilers = __webpack_require__("../../node_modules/expand-brackets/lib/compilers.js"); -var parsers = __webpack_require__("../../node_modules/expand-brackets/lib/parsers.js"); + if (n === 0) + return done() -/** - * Module dependencies - */ + var sync = true + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + sync = false + + function done () { + --self._processing + if (self._processing <= 0) { + if (sync) { + process.nextTick(function () { + self._finish() + }) + } else { + self._finish() + } + } + } +} -var debug = __webpack_require__("../../node_modules/debug/src/index.js")('expand-brackets'); -var extend = __webpack_require__("../../node_modules/extend-shallow/index.js"); -var Snapdragon = __webpack_require__("../../node_modules/snapdragon/index.js"); -var toRegex = __webpack_require__("../../node_modules/to-regex/index.js"); +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return -/** - * Parses the given POSIX character class `pattern` and returns a - * string that can be used for creating regular expressions for matching. - * - * @param {String} `pattern` - * @param {Object} `options` - * @return {Object} - * @api public - */ + if (this.realpath && !this._didRealpath) + return this._realpath() -function brackets(pattern, options) { - debug('initializing from <%s>', __filename); - var res = brackets.create(pattern, options); - return res.output; + common.finish(this) + this.emit('end', this.found) } -/** - * Takes an array of strings and a POSIX character class pattern, and returns a new - * array with only the strings that matched the pattern. - * - * ```js - * var brackets = require('expand-brackets'); - * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]')); - * //=> ['a'] - * - * console.log(brackets.match(['1', 'a', 'ab'], '[[:alpha:]]+')); - * //=> ['a', 'ab'] - * ``` - * @param {Array} `arr` Array of strings to match - * @param {String} `pattern` POSIX character class pattern(s) - * @param {Object} `options` - * @return {Array} - * @api public - */ +Glob.prototype._realpath = function () { + if (this._didRealpath) + return -brackets.match = function(arr, pattern, options) { - arr = [].concat(arr); - var opts = extend({}, options); - var isMatch = brackets.matcher(pattern, opts); - var len = arr.length; - var idx = -1; - var res = []; + this._didRealpath = true - while (++idx < len) { - var ele = arr[idx]; - if (isMatch(ele)) { - res.push(ele); - } - } + var n = this.matches.length + if (n === 0) + return this._finish() - if (res.length === 0) { - if (opts.failglob === true) { - throw new Error('no matches found for "' + pattern + '"'); - } + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) - if (opts.nonull === true || opts.nullglob === true) { - return [pattern.split('\\').join('')]; - } + function next () { + if (--n === 0) + self._finish() } - return res; -}; +} -/** - * Returns true if the specified `string` matches the given - * brackets `pattern`. - * - * ```js - * var brackets = require('expand-brackets'); - * - * console.log(brackets.isMatch('a.a', '[[:alpha:]].[[:alpha:]]')); - * //=> true - * console.log(brackets.isMatch('1.2', '[[:alpha:]].[[:alpha:]]')); - * //=> false - * ``` - * @param {String} `string` String to match - * @param {String} `pattern` Poxis pattern - * @param {String} `options` - * @return {Boolean} - * @api public - */ +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() -brackets.isMatch = function(str, pattern, options) { - return brackets.matcher(pattern, options)(str); -}; + var found = Object.keys(matchset) + var self = this + var n = found.length -/** - * Takes a POSIX character class pattern and returns a matcher function. The returned - * function takes the string to match as its only argument. - * - * ```js - * var brackets = require('expand-brackets'); - * var isMatch = brackets.matcher('[[:lower:]].[[:upper:]]'); - * - * console.log(isMatch('a.a')); - * //=> false - * console.log(isMatch('a.A')); - * //=> true - * ``` - * @param {String} `pattern` Poxis pattern - * @param {String} `options` - * @return {Boolean} - * @api public - */ + if (n === 0) + return cb() -brackets.matcher = function(pattern, options) { - var re = brackets.makeRe(pattern, options); - return function(str) { - return re.test(str); - }; -}; + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + rp.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here -/** - * Create a regular expression from the given `pattern`. - * - * ```js - * var brackets = require('expand-brackets'); - * var re = brackets.makeRe('[[:alpha:]]'); - * console.log(re); - * //=> /^(?:[a-zA-Z])$/ - * ``` - * @param {String} `pattern` The pattern to convert to regex. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} -brackets.makeRe = function(pattern, options) { - var res = brackets.create(pattern, options); - var opts = extend({strictErrors: false}, options); - return toRegex(res.output, opts); -}; +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} -/** - * Parses the given POSIX character class `pattern` and returns an object - * with the compiled `output` and optional source `map`. - * - * ```js - * var brackets = require('expand-brackets'); - * console.log(brackets('[[:alpha:]]')); - * // { options: { source: 'string' }, - * // input: '[[:alpha:]]', - * // state: {}, - * // compilers: - * // { eos: [Function], - * // noop: [Function], - * // bos: [Function], - * // not: [Function], - * // escape: [Function], - * // text: [Function], - * // posix: [Function], - * // bracket: [Function], - * // 'bracket.open': [Function], - * // 'bracket.inner': [Function], - * // 'bracket.literal': [Function], - * // 'bracket.close': [Function] }, - * // output: '[a-zA-Z]', - * // ast: - * // { type: 'root', - * // errors: [], - * // nodes: [ [Object], [Object], [Object] ] }, - * // parsingErrors: [] } - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {Object} - * @api public - */ +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} -brackets.create = function(pattern, options) { - var snapdragon = (options && options.snapdragon) || new Snapdragon(options); - compilers(snapdragon); - parsers(snapdragon); +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} - var ast = snapdragon.parse(pattern, options); - ast.input = pattern; - var res = snapdragon.compile(ast, options); - res.input = pattern; - return res; -}; +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} -/** - * Expose `brackets` constructor, parsers and compilers - */ +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} -brackets.compilers = compilers; -brackets.parsers = parsers; +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') -/** - * Expose `brackets` - * @type {Function} - */ + if (this.aborted) + return -module.exports = brackets; + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + //console.error('PROCESS %d', this._processing, pattern) -/***/ }), + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. -/***/ "../../node_modules/expand-brackets/lib/compilers.js": -/***/ (function(module, exports, __webpack_require__) { + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return -"use strict"; + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } -var posix = __webpack_require__("../../node_modules/posix-character-classes/index.js"); + var remain = pattern.slice(n) -module.exports = function(brackets) { - brackets.compiler + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix - /** - * Escaped characters - */ + var abs = this._makeAbs(read) - .set('escape', function(node) { - return this.emit('\\' + node.val.replace(/^\\/, ''), node); - }) + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() - /** - * Text - */ + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} - .set('text', function(node) { - return this.emit(node.val.replace(/([{}])/g, '\\$1'), node); - }) +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} - /** - * POSIX character classes - */ +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - .set('posix', function(node) { - if (node.val === '[::]') { - return this.emit('\\[::\\]', node); - } + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' - var val = posix[node.inner]; - if (typeof val === 'undefined') { - val = '[' + node.inner + ']'; + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) } - return this.emit(val, node); - }) + if (m) + matchedEntries.push(e) + } + } - /** - * Non-posix brackets - */ + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) - .set('bracket', function(node) { - return this.mapVisit(node.nodes); - }) - .set('bracket.open', function(node) { - return this.emit(node.val, node); - }) - .set('bracket.inner', function(node) { - var inner = node.val; + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() - if (inner === '[' || inner === ']') { - return this.emit('\\' + node.val, node); - } - if (inner === '^]') { - return this.emit('^\\]', node); - } - if (inner === '^') { - return this.emit('^', node); - } + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. - if (/-/.test(inner) && !/(\d-\d|\w-\w)/.test(inner)) { - inner = inner.split('-').join('\\-'); - } + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) - var isNegated = inner.charAt(0) === '^'; - // add slashes to negated brackets, per spec - if (isNegated && inner.indexOf('/') === -1) { - inner += '/'; - } - if (isNegated && inner.indexOf('.') === -1) { - inner += '.'; + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e } - // don't unescape `0` (octal literal) - inner = inner.replace(/\\([1-9])/g, '$1'); - return this.emit(inner, node); - }) - .set('bracket.close', function(node) { - var val = node.val.replace(/^\\/, ''); - if (node.parent.escaped === true) { - return this.emit('\\' + val, node); + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) } - return this.emit(val, node); - }); -}; + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} -/***/ }), +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return -/***/ "../../node_modules/expand-brackets/lib/parsers.js": -/***/ (function(module, exports, __webpack_require__) { + if (isIgnored(this, e)) + return -"use strict"; + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + var abs = isAbsolute(e) ? e : this._makeAbs(e) -var utils = __webpack_require__("../../node_modules/expand-brackets/lib/utils.js"); -var define = __webpack_require__("../../node_modules/define-property/index.js"); + if (this.mark) + e = this._mark(e) -/** - * Text regex - */ + if (this.absolute) + e = abs -var TEXT_REGEX = '(\\[(?=.*\\])|\\])+'; -var not = utils.createRegex(TEXT_REGEX); + if (this.matches[index][e]) + return -/** - * Brackets parsers - */ + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } -function parsers(brackets) { - brackets.state = brackets.state || {}; - brackets.parser.sets.bracket = brackets.parser.sets.bracket || []; - brackets.parser + this.matches[index][e] = true - .capture('escape', function() { - if (this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(/^\\(.)/); - if (!m) return; + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) - return pos({ - type: 'escape', - val: m[0] - }); - }) + this.emit('match', e) +} - /** - * Text parser - */ +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return - .capture('text', function() { - if (this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(not); - if (!m || !m[0]) return; + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) - return pos({ - type: 'text', - val: m[0] - }); - }) + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) - /** - * POSIX character classes: "[[:alpha:][:digits:]]" - */ - - .capture('posix', function() { - var pos = this.position(); - var m = this.match(/^\[:(.*?):\](?=.*\])/); - if (!m) return; - - var inside = this.isInside('bracket'); - if (inside) { - brackets.posix++; - } - - return pos({ - type: 'posix', - insideBracket: inside, - inner: m[1], - val: m[0] - }); - }) - - /** - * Bracket (noop) - */ - - .capture('bracket', function() {}) - - /** - * Open: '[' - */ - - .capture('bracket.open', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\[(?=.*\])/); - if (!m) return; - - var prev = this.prev(); - var last = utils.last(prev.nodes); - - if (parsed.slice(-1) === '\\' && !this.isInside('bracket')) { - last.val = last.val.slice(0, last.val.length - 1); - return pos({ - type: 'escape', - val: m[0] - }); - } - - var open = pos({ - type: 'bracket.open', - val: m[0] - }); - - if (last.type === 'bracket.open' || this.isInside('bracket')) { - open.val = '\\' + open.val; - open.type = 'bracket.inner'; - open.escaped = true; - return open; - } - - var node = pos({ - type: 'bracket', - nodes: [open] - }); + if (lstatcb) + self.fs.lstat(abs, lstatcb) - define(node, 'parent', prev); - define(open, 'parent', node); - this.push('bracket', node); - prev.nodes.push(node); - }) + function lstatcb_ (er, lstat) { + if (er && er.code === 'ENOENT') + return cb() - /** - * Bracket text - */ + var isSym = lstat && lstat.isSymbolicLink() + self.symlinks[abs] = isSym - .capture('bracket.inner', function() { - if (!this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(not); - if (!m || !m[0]) return; + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && lstat && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} - var next = this.input.charAt(0); - var val = m[0]; +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return - var node = pos({ - type: 'bracket.inner', - val: val - }); + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return - if (val === '\\\\') { - return node; - } + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) - var first = val.charAt(0); - var last = val.slice(-1); + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() - if (first === '!') { - val = '^' + val.slice(1); - } + if (Array.isArray(c)) + return cb(null, c) + } - if (last === '\\' || (val === '^' && next === ']')) { - val += this.input[0]; - this.consume(1); - } + var self = this + self.fs.readdir(abs, readdirCb(this, abs, cb)) +} - node.val = val; - return node; - }) +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} - /** - * Close: ']' - */ +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return - .capture('bracket.close', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\]/); - if (!m) return; + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } - var prev = this.prev(); - var last = utils.last(prev.nodes); + this.cache[abs] = entries + return cb(null, entries) +} - if (parsed.slice(-1) === '\\' && !this.isInside('bracket')) { - last.val = last.val.slice(0, last.val.length - 1); +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return - return pos({ - type: 'escape', - val: m[0] - }); + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + var abs = this._makeAbs(f) + this.cache[abs] = 'FILE' + if (abs === this.cwdAbs) { + var error = new Error(er.code + ' invalid cwd ' + this.cwd) + error.path = this.cwd + error.code = er.code + this.emit('error', error) + this.abort() } + break - var node = pos({ - type: 'bracket.close', - rest: this.input, - val: m[0] - }); + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break - if (last.type === 'bracket.open') { - node.type = 'bracket.inner'; - node.escaped = true; - return node; + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() } + if (!this.silent) + console.error('glob error', er) + break + } - var bracket = this.pop('bracket'); - if (!this.isType(bracket, 'bracket')) { - if (this.options.strict) { - throw new Error('missing opening "["'); - } - node.type = 'bracket.inner'; - node.escaped = true; - return node; - } + return cb() +} - bracket.nodes.push(node); - define(node, 'parent', bracket); - }); +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) } -/** - * Brackets parsers - */ -module.exports = parsers; +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) -/** - * Expose text regex - */ + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() -module.exports.TEXT_REGEX = TEXT_REGEX; + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) -/***/ }), + var isSym = this.symlinks[abs] + var len = entries.length -/***/ "../../node_modules/expand-brackets/lib/utils.js": -/***/ (function(module, exports, __webpack_require__) { + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() -"use strict"; + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) -var toRegex = __webpack_require__("../../node_modules/to-regex/index.js"); -var regexNot = __webpack_require__("../../node_modules/regex-not/index.js"); -var cached; + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } -/** - * Get the last element from `array` - * @param {Array} `array` - * @return {*} - */ + cb() +} -exports.last = function(arr) { - return arr[arr.length - 1]; -}; +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { -/** - * Create and cache regex to use for text nodes - */ + //console.error('ps2', prefix, exists) -exports.createRegex = function(pattern, include) { - if (cached) return cached; - var opts = {contains: true, strictClose: false}; - var not = regexNot.create(pattern, opts); - var re; + if (!this.matches[index]) + this.matches[index] = Object.create(null) - if (typeof include === 'string') { - re = toRegex('^(?:' + include + '|' + not + ')', opts); - } else { - re = toRegex(not, opts); + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } } - return (cached = re); -}; + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} -/***/ }), +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' -/***/ "../../node_modules/extend-shallow/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (f.length > this.maxLength) + return cb() -"use strict"; + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (Array.isArray(c)) + c = 'DIR' -var isObject = __webpack_require__("../../node_modules/is-extendable/index.js"); + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } + if (needDir && c === 'FILE') + return cb() - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } - if (isObject(obj)) { - assign(o, obj); + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) } } - return o; -}; -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + self.fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return self.fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) } } } -/** - * Returns true if the given `key` is an own property of `obj`. - */ +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { + this.statCache[abs] = false + return cb() + } -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) + return cb(null, false, stat) -/***/ }), + var c = true + if (stat) + c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c -/***/ "../../node_modules/extglob/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (needDir && c === 'FILE') + return cb() -"use strict"; + return cb(null, c, stat) +} -/** - * Module dependencies - */ +/***/ }), -var extend = __webpack_require__("../../node_modules/extend-shallow/index.js"); -var unique = __webpack_require__("../../node_modules/array-unique/index.js"); -var toRegex = __webpack_require__("../../node_modules/to-regex/index.js"); +/***/ "../../node_modules/glob/sync.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Local dependencies - */ +module.exports = globSync +globSync.GlobSync = GlobSync -var compilers = __webpack_require__("../../node_modules/extglob/lib/compilers.js"); -var parsers = __webpack_require__("../../node_modules/extglob/lib/parsers.js"); -var Extglob = __webpack_require__("../../node_modules/extglob/lib/extglob.js"); -var utils = __webpack_require__("../../node_modules/extglob/lib/utils.js"); -var MAX_LENGTH = 1024 * 64; +var rp = __webpack_require__("../../node_modules/fs.realpath/index.js") +var minimatch = __webpack_require__("../../node_modules/minimatch/minimatch.js") +var Minimatch = minimatch.Minimatch +var Glob = __webpack_require__("../../node_modules/glob/glob.js").Glob +var util = __webpack_require__("util") +var path = __webpack_require__("path") +var assert = __webpack_require__("assert") +var isAbsolute = __webpack_require__("../../node_modules/path-is-absolute/index.js") +var common = __webpack_require__("../../node_modules/glob/common.js") +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored -/** - * Convert the given `extglob` pattern into a regex-compatible string. Returns - * an object with the compiled result and the parsed AST. - * - * ```js - * var extglob = require('extglob'); - * console.log(extglob('*.!(*a)')); - * //=> '(?!\\.)[^/]*?\\.(?!(?!\\.)[^/]*?a\\b).*?' - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {String} - * @api public - */ +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') -function extglob(pattern, options) { - return extglob.create(pattern, options).output; + return new GlobSync(pattern, options).found } -/** - * Takes an array of strings and an extglob pattern and returns a new - * array that contains only the strings that match the pattern. - * - * ```js - * var extglob = require('extglob'); - * console.log(extglob.match(['a.a', 'a.b', 'a.c'], '*.!(*a)')); - * //=> ['a.b', 'a.c'] - * ``` - * @param {Array} `list` Array of strings to match - * @param {String} `pattern` Extglob pattern - * @param {Object} `options` - * @return {Array} Returns an array of matches - * @api public - */ +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') -extglob.match = function(list, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') - list = utils.arrayify(list); - var isMatch = extglob.matcher(pattern, options); - var len = list.length; - var idx = -1; - var matches = []; + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) - while (++idx < len) { - var ele = list[idx]; + setopts(this, pattern, options) - if (isMatch(ele)) { - matches.push(ele); - } - } + if (this.noprocess) + return this - // if no options were passed, uniquify results and return - if (typeof options === 'undefined') { - return unique(matches); + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) } + this._finish() +} - if (matches.length === 0) { - if (options.failglob === true) { - throw new Error('no matches found for "' + pattern + '"'); - } - if (options.nonull === true || options.nullglob === true) { - return [pattern.split('\\').join('')]; - } +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = rp.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) } + common.finish(this) +} - return options.nodupes !== false ? unique(matches) : matches; -}; -/** - * Returns true if the specified `string` matches the given - * extglob `pattern`. - * - * ```js - * var extglob = require('extglob'); - * - * console.log(extglob.isMatch('a.a', '*.!(*a)')); - * //=> false - * console.log(extglob.isMatch('a.b', '*.!(*a)')); - * //=> true - * ``` - * @param {String} `string` String to match - * @param {String} `pattern` Extglob pattern - * @param {String} `options` - * @return {Boolean} - * @api public - */ +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) -extglob.isMatch = function(str, pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ } + // now n is the index of the first one that is *not* a string. - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return - if (pattern === str) { - return true; - } + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break - if (pattern === '' || pattern === ' ' || pattern === '.') { - return pattern === str; + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break } - var isMatch = utils.memoize('isMatch', pattern, options, extglob.matcher); - return isMatch(str); -}; - -/** - * Returns true if the given `string` contains the given pattern. Similar to `.isMatch` but - * the pattern can match any part of the string. - * - * ```js - * var extglob = require('extglob'); - * console.log(extglob.contains('aa/bb/cc', '*b')); - * //=> true - * console.log(extglob.contains('aa/bb/cc', '*d')); - * //=> false - * ``` - * @param {String} `str` The string to match. - * @param {String} `pattern` Glob pattern to use for matching. - * @param {Object} `options` - * @return {Boolean} Returns true if the patter matches any part of `str`. - * @api public - */ - -extglob.contains = function(str, pattern, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } + var remain = pattern.slice(n) - if (pattern === '' || pattern === ' ' || pattern === '.') { - return pattern === str; - } + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix - var opts = extend({}, options, {contains: true}); - opts.strictClose = false; - opts.strictOpen = false; - return extglob.isMatch(str, pattern, opts); -}; + var abs = this._makeAbs(read) -/** - * Takes an extglob pattern and returns a matcher function. The returned - * function takes the string to match as its only argument. - * - * ```js - * var extglob = require('extglob'); - * var isMatch = extglob.matcher('*.!(*a)'); - * - * console.log(isMatch('a.a')); - * //=> false - * console.log(isMatch('a.b')); - * //=> true - * ``` - * @param {String} `pattern` Extglob pattern - * @param {String} `options` - * @return {Boolean} - * @api public - */ + //if ignored, skip processing + if (childrenIgnored(this, read)) + return -extglob.matcher = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} - function matcher() { - var re = extglob.makeRe(pattern, options); - return function(str) { - return re.test(str); - }; - } - return utils.memoize('matcher', pattern, options, matcher); -}; +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) -/** - * Convert the given `extglob` pattern into a regex-compatible string. Returns - * an object with the compiled result and the parsed AST. - * - * ```js - * var extglob = require('extglob'); - * console.log(extglob.create('*.!(*a)').output); - * //=> '(?!\\.)[^/]*?\\.(?!(?!\\.)[^/]*?a\\b).*?' - * ``` - * @param {String} `str` - * @param {Object} `options` - * @return {String} - * @api public - */ + // if the abs isn't a dir, then nothing can match! + if (!entries) + return -extglob.create = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' - function create() { - var ext = new Extglob(options); - var ast = ext.parse(pattern, options); - return ext.compile(ast, options); + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } } - return utils.memoize('create', pattern, options, create); -}; - -/** - * Returns an array of matches captured by `pattern` in `string`, or `null` - * if the pattern did not match. - * - * ```js - * var extglob = require('extglob'); - * extglob.capture(pattern, string[, options]); - * - * console.log(extglob.capture('test/*.js', 'test/foo.js')); - * //=> ['foo'] - * console.log(extglob.capture('test/*.js', 'foo/bar.css')); - * //=> null - * ``` - * @param {String} `pattern` Glob pattern to use for matching. - * @param {String} `string` String to match - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`. - * @api public - */ + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. -extglob.capture = function(pattern, str, options) { - var re = extglob.makeRe(pattern, extend({capture: true}, options)); + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) - function match() { - return function(string) { - var match = re.exec(string); - if (!match) { - return null; + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e } - return match.slice(1); - }; + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return } - var capture = utils.memoize('capture', pattern, options, match); - return capture(str); -}; + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} -/** - * Create a regular expression from the given `pattern` and `options`. - * - * ```js - * var extglob = require('extglob'); - * var re = extglob.makeRe('*.!(*a)'); - * console.log(re); - * //=> /^[^\/]*?\.(?![^\/]*?a)[^\/]*?$/ - * ``` - * @param {String} `pattern` The pattern to convert to regex. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ -extglob.makeRe = function(pattern, options) { - if (pattern instanceof RegExp) { - return pattern; - } +GlobSync.prototype._emitMatch = function (index, e) { + if (isIgnored(this, e)) + return - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } + var abs = this._makeAbs(e) - if (pattern.length > MAX_LENGTH) { - throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); - } + if (this.mark) + e = this._mark(e) - function makeRe() { - var opts = extend({strictErrors: false}, options); - if (opts.strictErrors === true) opts.strict = true; - var res = extglob.create(pattern, opts); - return toRegex(res.output, opts); + if (this.absolute) { + e = abs } - var regex = utils.memoize('makeRe', pattern, options, makeRe); - if (regex.source.length > MAX_LENGTH) { - throw new SyntaxError('potentially malicious regex detected'); - } + if (this.matches[index][e]) + return - return regex; -}; + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } -/** - * Cache - */ + this.matches[index][e] = true -extglob.cache = utils.cache; -extglob.clearCache = function() { - extglob.cache.__data__ = {}; -}; + if (this.stat) + this._stat(e) +} -/** - * Expose `Extglob` constructor, parsers and compilers - */ -extglob.Extglob = Extglob; -extglob.compilers = compilers; -extglob.parsers = parsers; +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) -/** - * Expose `extglob` - * @type {Function} - */ + var entries + var lstat + var stat + try { + lstat = this.fs.lstatSync(abs) + } catch (er) { + if (er.code === 'ENOENT') { + // lstat failed, doesn't exist + return null + } + } -module.exports = extglob; + var isSym = lstat && lstat.isSymbolicLink() + this.symlinks[abs] = isSym + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && lstat && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) -/***/ }), + return entries +} -/***/ "../../node_modules/extglob/lib/compilers.js": -/***/ (function(module, exports, __webpack_require__) { +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries -"use strict"; + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null -var brackets = __webpack_require__("../../node_modules/expand-brackets/index.js"); + if (Array.isArray(c)) + return c + } -/** - * Extglob compilers - */ + try { + return this._readdirEntries(abs, this.fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} -module.exports = function(extglob) { - function star() { - if (typeof extglob.options.star === 'function') { - return extglob.options.star.apply(this, arguments); - } - if (typeof extglob.options.star === 'string') { - return extglob.options.star; +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true } - return '.*?'; } - /** - * Use `expand-brackets` compilers - */ - - extglob.use(brackets.compilers); - extglob.compiler - - /** - * Escaped: "\\*" - */ - - .set('escape', function(node) { - return this.emit(node.val, node); - }) - - /** - * Dot: "." - */ - - .set('dot', function(node) { - return this.emit('\\' + node.val, node); - }) - - /** - * Question mark: "?" - */ - - .set('qmark', function(node) { - var val = '[^\\\\/.]'; - var prev = this.prev(); - - if (node.parsed.slice(-1) === '(') { - var ch = node.rest.charAt(0); - if (ch !== '!' && ch !== '=' && ch !== ':') { - return this.emit(val, node); - } - return this.emit(node.val, node); - } + this.cache[abs] = entries - if (prev.type === 'text' && prev.val) { - return this.emit(val, node); - } + // mark and cache dir-ness + return entries +} - if (node.val.length > 1) { - val += '{' + node.val.length + '}'; +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + var abs = this._makeAbs(f) + this.cache[abs] = 'FILE' + if (abs === this.cwdAbs) { + var error = new Error(er.code + ' invalid cwd ' + this.cwd) + error.path = this.cwd + error.code = er.code + throw error } - return this.emit(val, node); - }) + break - /** - * Plus: "+" - */ + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break - .set('plus', function(node) { - var prev = node.parsed.slice(-1); - if (prev === ']' || prev === ')') { - return this.emit(node.val, node); - } - var ch = this.output.slice(-1); - if (!this.output || (/[?*+]/.test(ch) && node.parent.type !== 'bracket')) { - return this.emit('\\+', node); - } - if (/\w/.test(ch) && !node.inside) { - return this.emit('+\\+?', node); - } - return this.emit('+', node); - }) + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} - /** - * Star: "*" - */ +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { - .set('star', function(node) { - var prev = this.prev(); - var prefix = prev.type !== 'text' && prev.type !== 'escape' - ? '(?!\\.)' - : ''; + var entries = this._readdir(abs, inGlobStar) - return this.emit(prefix + star.call(this, node), node); - }) + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return - /** - * Parens - */ + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) - .set('paren', function(node) { - return this.mapVisit(node.nodes); - }) - .set('paren.open', function(node) { - var capture = this.options.capture ? '(' : ''; + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) - switch (node.parent.prefix) { - case '!': - case '^': - return this.emit(capture + '(?:(?!(?:', node); - case '*': - case '+': - case '?': - case '@': - return this.emit(capture + '(?:', node); - default: { - var val = node.val; - if (this.options.bash === true) { - val = '\\' + val; - } else if (!this.options.capture && val === '(' && node.parent.rest[0] !== '?') { - val += '?:'; - } + var len = entries.length + var isSym = this.symlinks[abs] - return this.emit(val, node); - } - } - }) - .set('paren.close', function(node) { - var capture = this.options.capture ? ')' : ''; - - switch (node.prefix) { - case '!': - case '^': - var prefix = /^(\)|$)/.test(node.rest) ? '$' : ''; - var str = star.call(this, node); - - // if the extglob has a slash explicitly defined, we know the user wants - // to match slashes, so we need to ensure the "star" regex allows for it - if (node.parent.hasSlash && !this.options.star && this.options.slash !== false) { - str = '.*?'; - } + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return - return this.emit(prefix + ('))' + str + ')') + capture, node); - case '*': - case '+': - case '?': - return this.emit(')' + node.prefix + capture, node); - case '@': - return this.emit(')' + capture, node); - default: { - var val = (this.options.bash === true ? '\\' : '') + ')'; - return this.emit(val, node); - } - } - }) + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue - /** - * Text - */ + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) - .set('text', function(node) { - var val = node.val.replace(/[\[\]]/g, '\\$&'); - return this.emit(val, node); - }); -}; + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) -/***/ }), + if (!this.matches[index]) + this.matches[index] = Object.create(null) -/***/ "../../node_modules/extglob/lib/extglob.js": -/***/ (function(module, exports, __webpack_require__) { + // If it doesn't exist, then just mark the lack of results + if (!exists) + return -"use strict"; + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') -/** - * Module dependencies - */ + // Mark this as a match + this._emitMatch(index, prefix) +} -var Snapdragon = __webpack_require__("../../node_modules/snapdragon/index.js"); -var define = __webpack_require__("../../node_modules/extglob/node_modules/define-property/index.js"); -var extend = __webpack_require__("../../node_modules/extend-shallow/index.js"); +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' -/** - * Local dependencies - */ + if (f.length > this.maxLength) + return false -var compilers = __webpack_require__("../../node_modules/extglob/lib/compilers.js"); -var parsers = __webpack_require__("../../node_modules/extglob/lib/parsers.js"); + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] -/** - * Customize Snapdragon parser and renderer - */ + if (Array.isArray(c)) + c = 'DIR' -function Extglob(options) { - this.options = extend({source: 'extglob'}, options); - this.snapdragon = this.options.snapdragon || new Snapdragon(this.options); - this.snapdragon.patterns = this.snapdragon.patterns || {}; - this.compiler = this.snapdragon.compiler; - this.parser = this.snapdragon.parser; + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c - compilers(this.snapdragon); - parsers(this.snapdragon); + if (needDir && c === 'FILE') + return false - /** - * Override Snapdragon `.parse` method - */ + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } - define(this.snapdragon, 'parse', function(str, options) { - var parsed = Snapdragon.prototype.parse.apply(this, arguments); - parsed.input = str; - - // escape unmatched brace/bracket/parens - var last = this.parser.stack.pop(); - if (last && this.options.strict !== true) { - var node = last.nodes[0]; - node.val = '\\' + node.val; - var sibling = node.parent.nodes[1]; - if (sibling.type === 'star') { - sibling.loose = true; + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = this.fs.lstatSync(abs) + } catch (er) { + if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { + this.statCache[abs] = false + return false } } - // add non-enumerable parser reference - define(parsed, 'parser', this.parser); - return parsed; - }); + if (lstat && lstat.isSymbolicLink()) { + try { + stat = this.fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } - /** - * Decorate `.parse` method - */ + this.statCache[abs] = stat - define(this, 'parse', function(ast, options) { - return this.snapdragon.parse.apply(this.snapdragon, arguments); - }); + var c = true + if (stat) + c = stat.isDirectory() ? 'DIR' : 'FILE' - /** - * Decorate `.compile` method - */ + this.cache[abs] = this.cache[abs] || c - define(this, 'compile', function(ast, options) { - return this.snapdragon.compile.apply(this.snapdragon, arguments); - }); + if (needDir && c === 'FILE') + return false + return c } -/** - * Expose `Extglob` - */ +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} -module.exports = Extglob; +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} /***/ }), -/***/ "../../node_modules/extglob/lib/parsers.js": +/***/ "../../node_modules/globby/gitignore.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +const {promisify} = __webpack_require__("util"); +const fs = __webpack_require__("fs"); +const path = __webpack_require__("path"); +const fastGlob = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/index.js"); +const gitIgnore = __webpack_require__("../../node_modules/ignore/index.js"); +const slash = __webpack_require__("../../node_modules/slash/index.js"); -var brackets = __webpack_require__("../../node_modules/expand-brackets/index.js"); -var define = __webpack_require__("../../node_modules/extglob/node_modules/define-property/index.js"); -var utils = __webpack_require__("../../node_modules/extglob/lib/utils.js"); - -/** - * Characters to use in text regex (we want to "not" match - * characters that are matched by other parsers) - */ - -var TEXT_REGEX = '([!@*?+]?\\(|\\)|[*?.+\\\\]|\\[:?(?=.*\\])|:?\\])+'; -var not = utils.createRegex(TEXT_REGEX); - -/** - * Extglob parsers - */ - -function parsers(extglob) { - extglob.state = extglob.state || {}; - - /** - * Use `expand-brackets` parsers - */ +const DEFAULT_IGNORE = [ + '**/node_modules/**', + '**/flow-typed/**', + '**/coverage/**', + '**/.git' +]; - extglob.use(brackets.parsers); - extglob.parser.sets.paren = extglob.parser.sets.paren || []; - extglob.parser +const readFileP = promisify(fs.readFile); - /** - * Extglob open: "*(" - */ +const mapGitIgnorePatternTo = base => ignore => { + if (ignore.startsWith('!')) { + return '!' + path.posix.join(base, ignore.slice(1)); + } - .capture('paren.open', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^([!@*?+])?\(/); - if (!m) return; + return path.posix.join(base, ignore); +}; - var prev = this.prev(); - var prefix = m[1]; - var val = m[0]; +const parseGitIgnore = (content, options) => { + const base = slash(path.relative(options.cwd, path.dirname(options.fileName))); - var open = pos({ - type: 'paren.open', - parsed: parsed, - val: val - }); + return content + .split(/\r?\n/) + .filter(Boolean) + .filter(line => !line.startsWith('#')) + .map(mapGitIgnorePatternTo(base)); +}; - var node = pos({ - type: 'paren', - prefix: prefix, - nodes: [open] - }); +const reduceIgnore = files => { + const ignores = gitIgnore(); + for (const file of files) { + ignores.add(parseGitIgnore(file.content, { + cwd: file.cwd, + fileName: file.filePath + })); + } - // if nested negation extglobs, just cancel them out to simplify - if (prefix === '!' && prev.type === 'paren' && prev.prefix === '!') { - prev.prefix = '@'; - node.prefix = '@'; - } + return ignores; +}; - define(node, 'rest', this.input); - define(node, 'parsed', parsed); - define(node, 'parent', prev); - define(open, 'parent', node); +const ensureAbsolutePathForCwd = (cwd, p) => { + cwd = slash(cwd); + if (path.isAbsolute(p)) { + if (slash(p).startsWith(cwd)) { + return p; + } - this.push('paren', node); - prev.nodes.push(node); - }) + throw new Error(`Path ${p} is not in cwd ${cwd}`); + } - /** - * Extglob close: ")" - */ + return path.join(cwd, p); +}; - .capture('paren.close', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\)/); - if (!m) return; - - var parent = this.pop('paren'); - var node = pos({ - type: 'paren.close', - rest: this.input, - parsed: parsed, - val: m[0] - }); +const getIsIgnoredPredecate = (ignores, cwd) => { + return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p.path || p)))); +}; - if (!this.isType(parent, 'paren')) { - if (this.options.strict) { - throw new Error('missing opening paren: "("'); - } - node.escaped = true; - return node; - } +const getFile = async (file, cwd) => { + const filePath = path.join(cwd, file); + const content = await readFileP(filePath, 'utf8'); - node.prefix = parent.prefix; - parent.nodes.push(node); - define(node, 'parent', parent); - }) + return { + cwd, + filePath, + content + }; +}; - /** - * Escape: "\\." - */ +const getFileSync = (file, cwd) => { + const filePath = path.join(cwd, file); + const content = fs.readFileSync(filePath, 'utf8'); - .capture('escape', function() { - var pos = this.position(); - var m = this.match(/^\\(.)/); - if (!m) return; + return { + cwd, + filePath, + content + }; +}; - return pos({ - type: 'escape', - val: m[0], - ch: m[1] - }); - }) +const normalizeOptions = ({ + ignore = [], + cwd = slash(process.cwd()) +} = {}) => { + return {ignore, cwd}; +}; - /** - * Question marks: "?" - */ +module.exports = async options => { + options = normalizeOptions(options); - .capture('qmark', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\?+(?!\()/); - if (!m) return; - extglob.state.metachar = true; - return pos({ - type: 'qmark', - rest: this.input, - parsed: parsed, - val: m[0] - }); - }) + const paths = await fastGlob('**/.gitignore', { + ignore: DEFAULT_IGNORE.concat(options.ignore), + cwd: options.cwd + }); - /** - * Character parsers - */ + const files = await Promise.all(paths.map(file => getFile(file, options.cwd))); + const ignores = reduceIgnore(files); - .capture('star', /^\*(?!\()/) - .capture('plus', /^\+(?!\()/) - .capture('dot', /^\./) - .capture('text', not); + return getIsIgnoredPredecate(ignores, options.cwd); }; -/** - * Expose text regex string - */ +module.exports.sync = options => { + options = normalizeOptions(options); -module.exports.TEXT_REGEX = TEXT_REGEX; + const paths = fastGlob.sync('**/.gitignore', { + ignore: DEFAULT_IGNORE.concat(options.ignore), + cwd: options.cwd + }); -/** - * Extglob parsers - */ + const files = paths.map(file => getFileSync(file, options.cwd)); + const ignores = reduceIgnore(files); -module.exports = parsers; + return getIsIgnoredPredecate(ignores, options.cwd); +}; /***/ }), -/***/ "../../node_modules/extglob/lib/utils.js": +/***/ "../../node_modules/globby/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +const fs = __webpack_require__("fs"); +const arrayUnion = __webpack_require__("../../node_modules/array-union/index.js"); +const merge2 = __webpack_require__("../../node_modules/merge2/index.js"); +const fastGlob = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/index.js"); +const dirGlob = __webpack_require__("../../node_modules/dir-glob/index.js"); +const gitignore = __webpack_require__("../../node_modules/globby/gitignore.js"); +const {FilterStream, UniqueStream} = __webpack_require__("../../node_modules/globby/stream-utils.js"); -var regex = __webpack_require__("../../node_modules/regex-not/index.js"); -var Cache = __webpack_require__("../../node_modules/fragment-cache/index.js"); - -/** - * Utils - */ +const DEFAULT_FILTER = () => false; -var utils = module.exports; -var cache = utils.cache = new Cache(); +const isNegative = pattern => pattern[0] === '!'; -/** - * Cast `val` to an array - * @return {Array} - */ +const assertPatternsInput = patterns => { + if (!patterns.every(pattern => typeof pattern === 'string')) { + throw new TypeError('Patterns must be a string or an array of strings'); + } +}; -utils.arrayify = function(val) { - if (!Array.isArray(val)) { - return [val]; - } - return val; +const checkCwdOption = (options = {}) => { + if (!options.cwd) { + return; + } + + let stat; + try { + stat = fs.statSync(options.cwd); + } catch { + return; + } + + if (!stat.isDirectory()) { + throw new Error('The `cwd` option must be a path to a directory'); + } }; -/** - * Memoize a generated regex or function - */ +const getPathString = p => p.stats instanceof fs.Stats ? p.path : p; -utils.memoize = function(type, pattern, options, fn) { - var key = utils.createKey(type + pattern, options); +const generateGlobTasks = (patterns, taskOptions) => { + patterns = arrayUnion([].concat(patterns)); + assertPatternsInput(patterns); + checkCwdOption(taskOptions); - if (cache.has(type, key)) { - return cache.get(type, key); - } + const globTasks = []; - var val = fn(pattern, options); - if (options && options.cache === false) { - return val; - } + taskOptions = { + ignore: [], + expandDirectories: true, + ...taskOptions + }; - cache.set(type, key, val); - return val; + for (const [index, pattern] of patterns.entries()) { + if (isNegative(pattern)) { + continue; + } + + const ignore = patterns + .slice(index) + .filter(pattern => isNegative(pattern)) + .map(pattern => pattern.slice(1)); + + const options = { + ...taskOptions, + ignore: taskOptions.ignore.concat(ignore) + }; + + globTasks.push({pattern, options}); + } + + return globTasks; }; -/** - * Create the key to use for memoization. The key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. - */ +const globDirs = (task, fn) => { + let options = {}; + if (task.options.cwd) { + options.cwd = task.options.cwd; + } -utils.createKey = function(pattern, options) { - var key = pattern; - if (typeof options === 'undefined') { - return key; - } - for (var prop in options) { - key += ';' + prop + '=' + String(options[prop]); - } - return key; + if (Array.isArray(task.options.expandDirectories)) { + options = { + ...options, + files: task.options.expandDirectories + }; + } else if (typeof task.options.expandDirectories === 'object') { + options = { + ...options, + ...task.options.expandDirectories + }; + } + + return fn(task.pattern, options); }; -/** - * Create the regex to use for matching text - */ +const getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern]; -utils.createRegex = function(str) { - var opts = {contains: true, strictClose: false}; - return regex(str, opts); +const getFilterSync = options => { + return options && options.gitignore ? + gitignore.sync({cwd: options.cwd, ignore: options.ignore}) : + DEFAULT_FILTER; }; +const globToTask = task => glob => { + const {options} = task; + if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) { + options.ignore = dirGlob.sync(options.ignore); + } -/***/ }), + return { + pattern: glob, + options + }; +}; -/***/ "../../node_modules/extglob/node_modules/define-property/index.js": -/***/ (function(module, exports, __webpack_require__) { +module.exports = async (patterns, options) => { + const globTasks = generateGlobTasks(patterns, options); -"use strict"; -/*! - * define-property - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ + const getFilter = async () => { + return options && options.gitignore ? + gitignore({cwd: options.cwd, ignore: options.ignore}) : + DEFAULT_FILTER; + }; + const getTasks = async () => { + const tasks = await Promise.all(globTasks.map(async task => { + const globs = await getPattern(task, dirGlob); + return Promise.all(globs.map(globToTask(task))); + })); + return arrayUnion(...tasks); + }; -var isDescriptor = __webpack_require__("../../node_modules/is-descriptor/index.js"); + const [filter, tasks] = await Promise.all([getFilter(), getTasks()]); + const paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options))); -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } + return arrayUnion(...paths).filter(path_ => !filter(getPathString(path_))); +}; - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } +module.exports.sync = (patterns, options) => { + const globTasks = generateGlobTasks(patterns, options); - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } + const tasks = []; + for (const task of globTasks) { + const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); + tasks.push(...newTask); + } - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); + const filter = getFilterSync(options); + + let matches = []; + for (const task of tasks) { + matches = arrayUnion(matches, fastGlob.sync(task.pattern, task.options)); + } + + return matches.filter(path_ => !filter(path_)); }; +module.exports.stream = (patterns, options) => { + const globTasks = generateGlobTasks(patterns, options); -/***/ }), + const tasks = []; + for (const task of globTasks) { + const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); + tasks.push(...newTask); + } -/***/ "../../node_modules/fast-glob/index.js": -/***/ (function(module, exports, __webpack_require__) { + const filter = getFilterSync(options); + const filterStream = new FilterStream(p => !filter(p)); + const uniqueStream = new UniqueStream(); -const pkg = __webpack_require__("../../node_modules/fast-glob/out/index.js"); + return merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options))) + .pipe(filterStream) + .pipe(uniqueStream); +}; -module.exports = pkg.async; -module.exports.default = pkg.async; +module.exports.generateGlobTasks = generateGlobTasks; -module.exports.async = pkg.async; -module.exports.sync = pkg.sync; -module.exports.stream = pkg.stream; +module.exports.hasMagic = (patterns, options) => [] + .concat(patterns) + .some(pattern => fastGlob.isDynamicPattern(pattern, options)); -module.exports.generateTasks = pkg.generateTasks; +module.exports.gitignore = gitignore; /***/ }), -/***/ "../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/adapters/fs.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs = __webpack_require__("fs"); -exports.FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - stat: fs.stat, - lstatSync: fs.lstatSync, - statSync: fs.statSync -}; -function getFileSystemAdapter(fsMethods) { - if (!fsMethods) { - return exports.FILE_SYSTEM_ADAPTER; +const taskManager = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/managers/tasks.js"); +const async_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/async.js"); +const stream_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/stream.js"); +const sync_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/sync.js"); +const settings_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/settings.js"); +const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); +async function FastGlob(source, options) { + assertPatternsInput(source); + const works = getWorks(source, async_1.default, options); + const result = await Promise.all(works); + return utils.array.flatten(result); +} +// https://github.com/typescript-eslint/typescript-eslint/issues/60 +// eslint-disable-next-line no-redeclare +(function (FastGlob) { + function sync(source, options) { + assertPatternsInput(source); + const works = getWorks(source, sync_1.default, options); + return utils.array.flatten(works); + } + FastGlob.sync = sync; + function stream(source, options) { + assertPatternsInput(source); + const works = getWorks(source, stream_1.default, options); + /** + * The stream returned by the provider cannot work with an asynchronous iterator. + * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams. + * This affects performance (+25%). I don't see best solution right now. + */ + return utils.stream.merge(works); + } + FastGlob.stream = stream; + function generateTasks(source, options) { + assertPatternsInput(source); + const patterns = [].concat(source); + const settings = new settings_1.default(options); + return taskManager.generate(patterns, settings); + } + FastGlob.generateTasks = generateTasks; + function isDynamicPattern(source, options) { + assertPatternsInput(source); + const settings = new settings_1.default(options); + return utils.pattern.isDynamicPattern(source, settings); + } + FastGlob.isDynamicPattern = isDynamicPattern; + function escapePath(source) { + assertPatternsInput(source); + return utils.path.escape(source); + } + FastGlob.escapePath = escapePath; +})(FastGlob || (FastGlob = {})); +function getWorks(source, _Provider, options) { + const patterns = [].concat(source); + const settings = new settings_1.default(options); + const tasks = taskManager.generate(patterns, settings); + const provider = new _Provider(settings); + return tasks.map(provider.read, provider); +} +function assertPatternsInput(input) { + const source = [].concat(input); + const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); + if (!isValidSource) { + throw new TypeError('Patterns must be a string (non empty) or an array of strings'); } - return Object.assign({}, exports.FILE_SYSTEM_ADAPTER, fsMethods); } -exports.getFileSystemAdapter = getFileSystemAdapter; +module.exports = FastGlob; /***/ }), -/***/ "../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/index.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/managers/tasks.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const optionsManager = __webpack_require__("../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/managers/options.js"); -const statProvider = __webpack_require__("../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/providers/stat.js"); +exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; +const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); +function generate(patterns, settings) { + const positivePatterns = getPositivePatterns(patterns); + const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); + const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); + const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); + const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); + const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); + return staticTasks.concat(dynamicTasks); +} +exports.generate = generate; /** - * Asynchronous API. + * Returns tasks grouped by basic pattern directories. + * + * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately. + * This is necessary because directory traversal starts at the base directory and goes deeper. */ -function stat(path, opts) { - return new Promise((resolve, reject) => { - statProvider.async(path, optionsManager.prepare(opts), (err, stats) => err ? reject(err) : resolve(stats)); - }); -} -exports.stat = stat; -function statCallback(path, optsOrCallback, callback) { - if (typeof optsOrCallback === 'function') { - callback = optsOrCallback; /* tslint:disable-line: no-parameter-reassignment */ - optsOrCallback = undefined; /* tslint:disable-line: no-parameter-reassignment */ +function convertPatternsToTasks(positive, negative, dynamic) { + const tasks = []; + const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); + const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); + const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); + const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); + tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); + /* + * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory + * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest. + */ + if ('.' in insideCurrentDirectoryGroup) { + tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic)); } - if (typeof callback === 'undefined') { - throw new TypeError('The "callback" argument must be of type Function.'); + else { + tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); } - statProvider.async(path, optionsManager.prepare(optsOrCallback), callback); + return tasks; } -exports.statCallback = statCallback; -/** - * Synchronous API. - */ -function statSync(path, opts) { - return statProvider.sync(path, optionsManager.prepare(opts)); +exports.convertPatternsToTasks = convertPatternsToTasks; +function getPositivePatterns(patterns) { + return utils.pattern.getPositivePatterns(patterns); +} +exports.getPositivePatterns = getPositivePatterns; +function getNegativePatternsAsPositive(patterns, ignore) { + const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); + const positive = negative.map(utils.pattern.convertToPositivePattern); + return positive; +} +exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; +function groupPatternsByBaseDirectory(patterns) { + const group = {}; + return patterns.reduce((collection, pattern) => { + const base = utils.pattern.getBaseDirectory(pattern); + if (base in collection) { + collection[base].push(pattern); + } + else { + collection[base] = [pattern]; + } + return collection; + }, group); +} +exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; +function convertPatternGroupsToTasks(positive, negative, dynamic) { + return Object.keys(positive).map((base) => { + return convertPatternGroupToTask(base, positive[base], negative, dynamic); + }); +} +exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; +function convertPatternGroupToTask(base, positive, negative, dynamic) { + return { + dynamic, + positive, + negative, + base, + patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) + }; } -exports.statSync = statSync; +exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/***/ "../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/managers/options.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/async.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const fsAdapter = __webpack_require__("../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/adapters/fs.js"); -function prepare(opts) { - const options = Object.assign({ - fs: fsAdapter.getFileSystemAdapter(opts ? opts.fs : undefined), - throwErrorOnBrokenSymlinks: true, - followSymlinks: true - }, opts); - return options; +const stream_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/stream.js"); +const provider_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/provider.js"); +class ProviderAsync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = []; + return new Promise((resolve, reject) => { + const stream = this.api(root, task, options); + stream.once('error', reject); + stream.on('data', (entry) => entries.push(options.transform(entry))); + stream.once('end', () => resolve(entries)); + }); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } } -exports.prepare = prepare; +exports.default = ProviderAsync; /***/ }), -/***/ "../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/providers/stat.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/filters/deep.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -function sync(path, options) { - const lstat = options.fs.lstatSync(path); - if (!isFollowedSymlink(lstat, options)) { - return lstat; +const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); +const partial_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/matchers/partial.js"); +class DeepFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; } - try { - const stat = options.fs.statSync(path); - stat.isSymbolicLink = () => true; - return stat; + getFilter(basePath, positive, negative) { + const matcher = this._getMatcher(positive); + const negativeRe = this._getNegativePatternsRe(negative); + return (entry) => this._filter(basePath, entry, matcher, negativeRe); } - catch (err) { - if (!options.throwErrorOnBrokenSymlinks) { - return lstat; + _getMatcher(patterns) { + return new partial_1.default(patterns, this._settings, this._micromatchOptions); + } + _getNegativePatternsRe(patterns) { + const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); + return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); + } + _filter(basePath, entry, matcher, negativeRe) { + if (this._isSkippedByDeep(basePath, entry.path)) { + return false; } - throw err; + if (this._isSkippedSymbolicLink(entry)) { + return false; + } + const filepath = utils.path.removeLeadingDotSegment(entry.path); + if (this._isSkippedByPositivePatterns(filepath, matcher)) { + return false; + } + return this._isSkippedByNegativePatterns(filepath, negativeRe); } -} -exports.sync = sync; -function async(path, options, callback) { - options.fs.lstat(path, (err0, lstat) => { - if (err0) { - return callback(err0, undefined); + _isSkippedByDeep(basePath, entryPath) { + /** + * Avoid unnecessary depth calculations when it doesn't matter. + */ + if (this._settings.deep === Infinity) { + return false; } - if (!isFollowedSymlink(lstat, options)) { - return callback(null, lstat); + return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; + } + _getEntryLevel(basePath, entryPath) { + const entryPathDepth = entryPath.split('/').length; + if (basePath === '') { + return entryPathDepth; } - options.fs.stat(path, (err1, stat) => { - if (err1) { - return options.throwErrorOnBrokenSymlinks ? callback(err1) : callback(null, lstat); - } - stat.isSymbolicLink = () => true; - callback(null, stat); - }); - }); -} -exports.async = async; -/** - * Returns `true` for followed symlink. - */ -function isFollowedSymlink(stat, options) { - return stat.isSymbolicLink() && options.followSymlinks; + const basePathDepth = basePath.split('/').length; + return entryPathDepth - basePathDepth; + } + _isSkippedSymbolicLink(entry) { + return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); + } + _isSkippedByPositivePatterns(entryPath, matcher) { + return !this._settings.baseNameMatch && !matcher.match(entryPath); + } + _isSkippedByNegativePatterns(entryPath, patternsRe) { + return !utils.pattern.matchAny(entryPath, patternsRe); + } } -exports.isFollowedSymlink = isFollowedSymlink; +exports.default = DeepFilter; /***/ }), -/***/ "../../node_modules/fast-glob/node_modules/glob-parent/index.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/filters/entry.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var path = __webpack_require__("path"); -var isglob = __webpack_require__("../../node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob/index.js"); -var pathDirname = __webpack_require__("../../node_modules/path-dirname/index.js"); -var isWin32 = __webpack_require__("os").platform() === 'win32'; - -module.exports = function globParent(str) { - // flip windows path separators - if (isWin32 && str.indexOf('/') < 0) str = str.split('\\').join('/'); - - // special case for strings ending in enclosure containing path separator - if (/[\{\[].*[\/]*.*[\}\]]$/.test(str)) str += '/'; - - // preserves full path in case of trailing path separator - str += 'a'; - - // remove path parts that are globby - do {str = pathDirname.posix(str)} - while (isglob(str) || /(^|[^\\])([\{\[]|\([^\)]+$)/.test(str)); - - // remove escape chars and return result - return str.replace(/\\([\*\?\|\[\]\(\)\{\}])/g, '$1'); -}; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); +class EntryFilter { + constructor(_settings, _micromatchOptions) { + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this.index = new Map(); + } + getFilter(positive, negative) { + const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); + const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions); + return (entry) => this._filter(entry, positiveRe, negativeRe); + } + _filter(entry, positiveRe, negativeRe) { + if (this._settings.unique && this._isDuplicateEntry(entry)) { + return false; + } + if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { + return false; + } + if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) { + return false; + } + const filepath = this._settings.baseNameMatch ? entry.name : entry.path; + const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe); + if (this._settings.unique && isMatched) { + this._createIndexRecord(entry); + } + return isMatched; + } + _isDuplicateEntry(entry) { + return this.index.has(entry.path); + } + _createIndexRecord(entry) { + this.index.set(entry.path, undefined); + } + _onlyFileFilter(entry) { + return this._settings.onlyFiles && !entry.dirent.isFile(); + } + _onlyDirectoryFilter(entry) { + return this._settings.onlyDirectories && !entry.dirent.isDirectory(); + } + _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { + if (!this._settings.absolute) { + return false; + } + const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); + return utils.pattern.matchAny(fullpath, patternsRe); + } + _isMatchToPatterns(entryPath, patternsRe) { + const filepath = utils.path.removeLeadingDotSegment(entryPath); + return utils.pattern.matchAny(filepath, patternsRe); + } +} +exports.default = EntryFilter; /***/ }), -/***/ "../../node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob/index.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/filters/error.js": /***/ (function(module, exports, __webpack_require__) { -/*! - * is-glob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ - -var isExtglob = __webpack_require__("../../node_modules/is-extglob/index.js"); - -module.exports = function isGlob(str) { - if (typeof str !== 'string' || str === '') { - return false; - } - - if (isExtglob(str)) return true; - - var regex = /(\\).|([*?]|\[.*\]|\{.*\}|\(.*\|.*\)|^!)/; - var match; +"use strict"; - while ((match = regex.exec(str))) { - if (match[2]) return true; - str = str.slice(match.index + match[0].length); - } - return false; -}; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); +class ErrorFilter { + constructor(_settings) { + this._settings = _settings; + } + getFilter() { + return (error) => this._isNonFatalError(error); + } + _isNonFatalError(error) { + return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors; + } +} +exports.default = ErrorFilter; /***/ }), -/***/ "../../node_modules/fast-glob/out/adapters/fs-stream.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/matchers/matcher.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - 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); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var stream = __webpack_require__("stream"); -var fsStat = __webpack_require__("../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/index.js"); -var fs_1 = __webpack_require__("../../node_modules/fast-glob/out/adapters/fs.js"); -var FileSystemStream = /** @class */ (function (_super) { - __extends(FileSystemStream, _super); - function FileSystemStream() { - return _super !== null && _super.apply(this, arguments) || this; - } - /** - * Use stream API to read entries for Task. - */ - FileSystemStream.prototype.read = function (patterns, filter) { - var _this = this; - var filepaths = patterns.map(this.getFullEntryPath, this); - var transform = new stream.Transform({ objectMode: true }); - transform._transform = function (index, _enc, done) { - return _this.getEntry(filepaths[index], patterns[index]).then(function (entry) { - if (entry !== null && filter(entry)) { - transform.push(entry); - } - if (index === filepaths.length - 1) { - transform.end(); - } - done(); - }); - }; - for (var i = 0; i < filepaths.length; i++) { - transform.write(i); - } - return transform; - }; - /** - * Return entry for the provided path. - */ - FileSystemStream.prototype.getEntry = function (filepath, pattern) { - var _this = this; - return this.getStat(filepath) - .then(function (stat) { return _this.makeEntry(stat, pattern); }) - .catch(function () { return null; }); - }; - /** - * Return fs.Stats for the provided path. - */ - FileSystemStream.prototype.getStat = function (filepath) { - return fsStat.stat(filepath, { throwErrorOnBrokenSymlinks: false }); - }; - return FileSystemStream; -}(fs_1.default)); -exports.default = FileSystemStream; - - -/***/ }), - -/***/ "../../node_modules/fast-glob/out/adapters/fs-sync.js": -/***/ (function(module, exports, __webpack_require__) { -"use strict"; - -var __extends = (this && this.__extends) || (function () { - 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); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var fsStat = __webpack_require__("../../node_modules/fast-glob/node_modules/@nodelib/fs.stat/out/index.js"); -var fs_1 = __webpack_require__("../../node_modules/fast-glob/out/adapters/fs.js"); -var FileSystemSync = /** @class */ (function (_super) { - __extends(FileSystemSync, _super); - function FileSystemSync() { - return _super !== null && _super.apply(this, arguments) || this; - } - /** - * Use sync API to read entries for Task. - */ - FileSystemSync.prototype.read = function (patterns, filter) { - var _this = this; - var entries = []; - patterns.forEach(function (pattern) { - var filepath = _this.getFullEntryPath(pattern); - var entry = _this.getEntry(filepath, pattern); - if (entry === null || !filter(entry)) { - return; - } - entries.push(entry); - }); - return entries; - }; - /** - * Return entry for the provided path. - */ - FileSystemSync.prototype.getEntry = function (filepath, pattern) { - try { - var stat = this.getStat(filepath); - return this.makeEntry(stat, pattern); - } - catch (err) { - return null; - } - }; - /** - * Return fs.Stats for the provided path. - */ - FileSystemSync.prototype.getStat = function (filepath) { - return fsStat.statSync(filepath, { throwErrorOnBrokenSymlinks: false }); - }; - return FileSystemSync; -}(fs_1.default)); -exports.default = FileSystemSync; +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); +class Matcher { + constructor(_patterns, _settings, _micromatchOptions) { + this._patterns = _patterns; + this._settings = _settings; + this._micromatchOptions = _micromatchOptions; + this._storage = []; + this._fillStorage(); + } + _fillStorage() { + /** + * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level). + * So, before expand patterns with brace expansion into separated patterns. + */ + const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns); + for (const pattern of patterns) { + const segments = this._getPatternSegments(pattern); + const sections = this._splitSegmentsIntoSections(segments); + this._storage.push({ + complete: sections.length <= 1, + pattern, + segments, + sections + }); + } + } + _getPatternSegments(pattern) { + const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); + return parts.map((part) => { + const dynamic = utils.pattern.isDynamicPattern(part, this._settings); + if (!dynamic) { + return { + dynamic: false, + pattern: part + }; + } + return { + dynamic: true, + pattern: part, + patternRe: utils.pattern.makeRe(part, this._micromatchOptions) + }; + }); + } + _splitSegmentsIntoSections(segments) { + return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); + } +} +exports.default = Matcher; /***/ }), -/***/ "../../node_modules/fast-glob/out/adapters/fs.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/matchers/partial.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var path = __webpack_require__("path"); -var FileSystem = /** @class */ (function () { - function FileSystem(options) { - this.options = options; - } - /** - * Return full path to entry. - */ - FileSystem.prototype.getFullEntryPath = function (filepath) { - return path.resolve(this.options.cwd, filepath); - }; - /** - * Return an implementation of the Entry interface. - */ - FileSystem.prototype.makeEntry = function (stat, pattern) { - stat.path = pattern; - stat.depth = pattern.split('/').length; - return stat; - }; - return FileSystem; -}()); -exports.default = FileSystem; + +Object.defineProperty(exports, "__esModule", { value: true }); +const matcher_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/matchers/matcher.js"); +class PartialMatcher extends matcher_1.default { + match(filepath) { + const parts = filepath.split('/'); + const levels = parts.length; + const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels); + for (const pattern of patterns) { + const section = pattern.sections[0]; + /** + * In this case, the pattern has a globstar and we must read all directories unconditionally, + * but only if the level has reached the end of the first group. + * + * fixtures/{a,b}/** + * ^ true/false ^ always true + */ + if (!pattern.complete && levels > section.length) { + return true; + } + const match = parts.every((part, index) => { + const segment = pattern.segments[index]; + if (segment.dynamic && segment.patternRe.test(part)) { + return true; + } + if (!segment.dynamic && segment.pattern === part) { + return true; + } + return false; + }); + if (match) { + return true; + } + } + return false; + } +} +exports.default = PartialMatcher; /***/ }), -/***/ "../../node_modules/fast-glob/out/index.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/provider.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var optionsManager = __webpack_require__("../../node_modules/fast-glob/out/managers/options.js"); -var taskManager = __webpack_require__("../../node_modules/fast-glob/out/managers/tasks.js"); -var reader_async_1 = __webpack_require__("../../node_modules/fast-glob/out/providers/reader-async.js"); -var reader_stream_1 = __webpack_require__("../../node_modules/fast-glob/out/providers/reader-stream.js"); -var reader_sync_1 = __webpack_require__("../../node_modules/fast-glob/out/providers/reader-sync.js"); -var arrayUtils = __webpack_require__("../../node_modules/fast-glob/out/utils/array.js"); -var streamUtils = __webpack_require__("../../node_modules/fast-glob/out/utils/stream.js"); -/** - * Synchronous API. - */ -function sync(source, opts) { - assertPatternsInput(source); - var works = getWorks(source, reader_sync_1.default, opts); - return arrayUtils.flatten(works); -} -exports.sync = sync; -/** - * Asynchronous API. - */ -function async(source, opts) { - try { - assertPatternsInput(source); - } - catch (error) { - return Promise.reject(error); - } - var works = getWorks(source, reader_async_1.default, opts); - return Promise.all(works).then(arrayUtils.flatten); -} -exports.async = async; -/** - * Stream API. - */ -function stream(source, opts) { - assertPatternsInput(source); - var works = getWorks(source, reader_stream_1.default, opts); - return streamUtils.merge(works); -} -exports.stream = stream; -/** - * Return a set of tasks based on provided patterns. - */ -function generateTasks(source, opts) { - assertPatternsInput(source); - var patterns = [].concat(source); - var options = optionsManager.prepare(opts); - return taskManager.generate(patterns, options); -} -exports.generateTasks = generateTasks; -/** - * Returns a set of works based on provided tasks and class of the reader. - */ -function getWorks(source, _Reader, opts) { - var patterns = [].concat(source); - var options = optionsManager.prepare(opts); - var tasks = taskManager.generate(patterns, options); - var reader = new _Reader(options); - return tasks.map(reader.read, reader); -} -function assertPatternsInput(source) { - if ([].concat(source).every(isString)) { - return; - } - throw new TypeError('Patterns must be a string or an array of strings'); -} -function isString(source) { - /* tslint:disable-next-line strict-type-predicates */ - return typeof source === 'string'; -} + +Object.defineProperty(exports, "__esModule", { value: true }); +const path = __webpack_require__("path"); +const deep_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/filters/deep.js"); +const entry_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/filters/entry.js"); +const error_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/filters/error.js"); +const entry_2 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/transformers/entry.js"); +class Provider { + constructor(_settings) { + this._settings = _settings; + this.errorFilter = new error_1.default(this._settings); + this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); + this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); + this.entryTransformer = new entry_2.default(this._settings); + } + _getRootDirectory(task) { + return path.resolve(this._settings.cwd, task.base); + } + _getReaderOptions(task) { + const basePath = task.base === '.' ? '' : task.base; + return { + basePath, + pathSegmentSeparator: '/', + concurrency: this._settings.concurrency, + deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), + entryFilter: this.entryFilter.getFilter(task.positive, task.negative), + errorFilter: this.errorFilter.getFilter(), + followSymbolicLinks: this._settings.followSymbolicLinks, + fs: this._settings.fs, + stats: this._settings.stats, + throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, + transform: this.entryTransformer.getTransformer() + }; + } + _getMicromatchOptions() { + return { + dot: this._settings.dot, + matchBase: this._settings.baseNameMatch, + nobrace: !this._settings.braceExpansion, + nocase: !this._settings.caseSensitiveMatch, + noext: !this._settings.extglob, + noglobstar: !this._settings.globstar, + posix: true, + strictSlashes: false + }; + } +} +exports.default = Provider; /***/ }), -/***/ "../../node_modules/fast-glob/out/managers/options.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/stream.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(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); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -function prepare(options) { - var opts = __assign({ cwd: process.cwd(), deep: true, ignore: [], dot: false, stats: false, onlyFiles: true, onlyDirectories: false, followSymlinkedDirectories: true, unique: true, markDirectories: false, absolute: false, nobrace: false, brace: true, noglobstar: false, globstar: true, noext: false, extension: true, nocase: false, case: true, matchBase: false, transform: null }, options); - if (opts.onlyDirectories) { - opts.onlyFiles = false; - } - opts.brace = !opts.nobrace; - opts.globstar = !opts.noglobstar; - opts.extension = !opts.noext; - opts.case = !opts.nocase; - if (options) { - opts.brace = ('brace' in options ? options.brace : opts.brace); - opts.globstar = ('globstar' in options ? options.globstar : opts.globstar); - opts.extension = ('extension' in options ? options.extension : opts.extension); - opts.case = ('case' in options ? options.case : opts.case); - } - return opts; -} -exports.prepare = prepare; + +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = __webpack_require__("stream"); +const stream_2 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/stream.js"); +const provider_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/provider.js"); +class ProviderStream extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new stream_2.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const source = this.api(root, task, options); + const destination = new stream_1.Readable({ objectMode: true, read: () => { } }); + source + .once('error', (error) => destination.emit('error', error)) + .on('data', (entry) => destination.emit('data', options.transform(entry))) + .once('end', () => destination.emit('end')); + destination + .once('close', () => source.destroy()); + return destination; + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderStream; /***/ }), -/***/ "../../node_modules/fast-glob/out/managers/tasks.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/sync.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var patternUtils = __webpack_require__("../../node_modules/fast-glob/out/utils/pattern.js"); -/** - * Generate tasks based on parent directory of each pattern. - */ -function generate(patterns, options) { - var unixPatterns = patterns.map(patternUtils.unixifyPattern); - var unixIgnore = options.ignore.map(patternUtils.unixifyPattern); - var positivePatterns = getPositivePatterns(unixPatterns); - var negativePatterns = getNegativePatternsAsPositive(unixPatterns, unixIgnore); - /** - * When the `case` option is disabled, all patterns must be marked as dynamic, because we cannot check filepath - * directly (without read directory). - */ - var staticPatterns = !options.case ? [] : positivePatterns.filter(patternUtils.isStaticPattern); - var dynamicPatterns = !options.case ? positivePatterns : positivePatterns.filter(patternUtils.isDynamicPattern); - var staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); - var dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); - return staticTasks.concat(dynamicTasks); -} -exports.generate = generate; -/** - * Convert patterns to tasks based on parent directory of each pattern. - */ -function convertPatternsToTasks(positive, negative, dynamic) { - var positivePatternsGroup = groupPatternsByBaseDirectory(positive); - // When we have a global group – there is no reason to divide the patterns into independent tasks. - // In this case, the global task covers the rest. - if ('.' in positivePatternsGroup) { - var task = convertPatternGroupToTask('.', positive, negative, dynamic); - return [task]; - } - return convertPatternGroupsToTasks(positivePatternsGroup, negative, dynamic); -} -exports.convertPatternsToTasks = convertPatternsToTasks; -/** - * Return only positive patterns. - */ -function getPositivePatterns(patterns) { - return patternUtils.getPositivePatterns(patterns); -} -exports.getPositivePatterns = getPositivePatterns; -/** - * Return only negative patterns. - */ -function getNegativePatternsAsPositive(patterns, ignore) { - var negative = patternUtils.getNegativePatterns(patterns).concat(ignore); - var positive = negative.map(patternUtils.convertToPositivePattern); - return positive; -} -exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; -/** - * Group patterns by base directory of each pattern. - */ -function groupPatternsByBaseDirectory(patterns) { - return patterns.reduce(function (collection, pattern) { - var base = patternUtils.getBaseDirectory(pattern); - if (base in collection) { - collection[base].push(pattern); - } - else { - collection[base] = [pattern]; - } - return collection; - }, {}); -} -exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; -/** - * Convert group of patterns to tasks. - */ -function convertPatternGroupsToTasks(positive, negative, dynamic) { - return Object.keys(positive).map(function (base) { - return convertPatternGroupToTask(base, positive[base], negative, dynamic); - }); -} -exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; -/** - * Create a task for positive and negative patterns. - */ -function convertPatternGroupToTask(base, positive, negative, dynamic) { - return { - base: base, - dynamic: dynamic, - positive: positive, - negative: negative, - patterns: [].concat(positive, negative.map(patternUtils.convertToNegativePattern)) - }; -} -exports.convertPatternGroupToTask = convertPatternGroupToTask; + +Object.defineProperty(exports, "__esModule", { value: true }); +const sync_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/sync.js"); +const provider_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/provider.js"); +class ProviderSync extends provider_1.default { + constructor() { + super(...arguments); + this._reader = new sync_1.default(this._settings); + } + read(task) { + const root = this._getRootDirectory(task); + const options = this._getReaderOptions(task); + const entries = this.api(root, task, options); + return entries.map(options.transform); + } + api(root, task, options) { + if (task.dynamic) { + return this._reader.dynamic(root, options); + } + return this._reader.static(task.patterns, options); + } +} +exports.default = ProviderSync; /***/ }), -/***/ "../../node_modules/fast-glob/out/providers/filters/deep.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/transformers/entry.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__("../../node_modules/fast-glob/out/utils/path.js"); -var patternUtils = __webpack_require__("../../node_modules/fast-glob/out/utils/pattern.js"); -var DeepFilter = /** @class */ (function () { - function DeepFilter(options, micromatchOptions) { - this.options = options; - this.micromatchOptions = micromatchOptions; - } - /** - * Returns filter for directories. - */ - DeepFilter.prototype.getFilter = function (positive, negative) { - var _this = this; - var maxPatternDepth = this.getMaxPatternDepth(positive); - var negativeRe = this.getNegativePatternsRe(negative); - return function (entry) { return _this.filter(entry, negativeRe, maxPatternDepth); }; - }; - /** - * Returns max depth of the provided patterns. - */ - DeepFilter.prototype.getMaxPatternDepth = function (patterns) { - var globstar = patterns.some(patternUtils.hasGlobStar); - return globstar ? Infinity : patternUtils.getMaxNaivePatternsDepth(patterns); - }; - /** - * Returns RegExp's for patterns that can affect the depth of reading. - */ - DeepFilter.prototype.getNegativePatternsRe = function (patterns) { - var affectDepthOfReadingPatterns = patterns.filter(patternUtils.isAffectDepthOfReadingPattern); - return patternUtils.convertPatternsToRe(affectDepthOfReadingPatterns, this.micromatchOptions); - }; - /** - * Returns «true» for directory that should be read. - */ - DeepFilter.prototype.filter = function (entry, negativeRe, maxPatternDepth) { - if (this.isSkippedByDeepOption(entry.depth)) { - return false; - } - if (this.isSkippedByMaxPatternDepth(entry.depth, maxPatternDepth)) { - return false; - } - if (this.isSkippedSymlinkedDirectory(entry)) { - return false; - } - if (this.isSkippedDotDirectory(entry)) { - return false; - } - return this.isSkippedByNegativePatterns(entry, negativeRe); - }; - /** - * Returns «true» when the «deep» option is disabled or number and depth of the entry is greater that the option value. - */ - DeepFilter.prototype.isSkippedByDeepOption = function (entryDepth) { - return !this.options.deep || (typeof this.options.deep === 'number' && entryDepth >= this.options.deep); - }; - /** - * Returns «true» when depth parameter is not an Infinity and entry depth greater that the parameter value. - */ - DeepFilter.prototype.isSkippedByMaxPatternDepth = function (entryDepth, maxPatternDepth) { - return maxPatternDepth !== Infinity && entryDepth >= maxPatternDepth; - }; - /** - * Returns «true» for symlinked directory if the «followSymlinkedDirectories» option is disabled. - */ - DeepFilter.prototype.isSkippedSymlinkedDirectory = function (entry) { - return !this.options.followSymlinkedDirectories && entry.isSymbolicLink(); - }; - /** - * Returns «true» for a directory whose name starts with a period if «dot» option is disabled. - */ - DeepFilter.prototype.isSkippedDotDirectory = function (entry) { - return !this.options.dot && pathUtils.isDotDirectory(entry.path); - }; - /** - * Returns «true» for a directory whose path math to any negative pattern. - */ - DeepFilter.prototype.isSkippedByNegativePatterns = function (entry, negativeRe) { - return !patternUtils.matchAny(entry.path, negativeRe); - }; - return DeepFilter; -}()); -exports.default = DeepFilter; + +Object.defineProperty(exports, "__esModule", { value: true }); +const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); +class EntryTransformer { + constructor(_settings) { + this._settings = _settings; + } + getTransformer() { + return (entry) => this._transform(entry); + } + _transform(entry) { + let filepath = entry.path; + if (this._settings.absolute) { + filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); + filepath = utils.path.unixify(filepath); + } + if (this._settings.markDirectories && entry.dirent.isDirectory()) { + filepath += '/'; + } + if (!this._settings.objectMode) { + return filepath; + } + return Object.assign(Object.assign({}, entry), { path: filepath }); + } +} +exports.default = EntryTransformer; /***/ }), -/***/ "../../node_modules/fast-glob/out/providers/filters/entry.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/readers/reader.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var pathUtils = __webpack_require__("../../node_modules/fast-glob/out/utils/path.js"); -var patternUtils = __webpack_require__("../../node_modules/fast-glob/out/utils/pattern.js"); -var EntryFilter = /** @class */ (function () { - function EntryFilter(options, micromatchOptions) { - this.options = options; - this.micromatchOptions = micromatchOptions; - this.index = new Map(); - } - /** - * Returns filter for directories. - */ - EntryFilter.prototype.getFilter = function (positive, negative) { - var _this = this; - var positiveRe = patternUtils.convertPatternsToRe(positive, this.micromatchOptions); - var negativeRe = patternUtils.convertPatternsToRe(negative, this.micromatchOptions); - return function (entry) { return _this.filter(entry, positiveRe, negativeRe); }; - }; - /** - * Returns true if entry must be added to result. - */ - EntryFilter.prototype.filter = function (entry, positiveRe, negativeRe) { - // Exclude duplicate results - if (this.options.unique) { - if (this.isDuplicateEntry(entry)) { - return false; - } - this.createIndexRecord(entry); - } - // Filter files and directories by options - if (this.onlyFileFilter(entry) || this.onlyDirectoryFilter(entry)) { - return false; - } - if (this.isSkippedByAbsoluteNegativePatterns(entry, negativeRe)) { - return false; - } - return this.isMatchToPatterns(entry.path, positiveRe) && !this.isMatchToPatterns(entry.path, negativeRe); - }; - /** - * Return true if the entry already has in the cross reader index. - */ - EntryFilter.prototype.isDuplicateEntry = function (entry) { - return this.index.has(entry.path); - }; - /** - * Create record in the cross reader index. - */ - EntryFilter.prototype.createIndexRecord = function (entry) { - this.index.set(entry.path, undefined); - }; - /** - * Returns true for non-files if the «onlyFiles» option is enabled. - */ - EntryFilter.prototype.onlyFileFilter = function (entry) { - return this.options.onlyFiles && !entry.isFile(); - }; - /** - * Returns true for non-directories if the «onlyDirectories» option is enabled. - */ - EntryFilter.prototype.onlyDirectoryFilter = function (entry) { - return this.options.onlyDirectories && !entry.isDirectory(); - }; - /** - * Return true when `absolute` option is enabled and matched to the negative patterns. - */ - EntryFilter.prototype.isSkippedByAbsoluteNegativePatterns = function (entry, negativeRe) { - if (!this.options.absolute) { - return false; - } - var fullpath = pathUtils.makeAbsolute(this.options.cwd, entry.path); - return this.isMatchToPatterns(fullpath, negativeRe); - }; - /** - * Return true when entry match to provided patterns. - * - * First, just trying to apply patterns to the path. - * Second, trying to apply patterns to the path with final slash (need to micromatch to support «directory/**» patterns). - */ - EntryFilter.prototype.isMatchToPatterns = function (filepath, patternsRe) { - return patternUtils.matchAny(filepath, patternsRe) || patternUtils.matchAny(filepath + '/', patternsRe); - }; - return EntryFilter; -}()); -exports.default = EntryFilter; + +Object.defineProperty(exports, "__esModule", { value: true }); +const path = __webpack_require__("path"); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); +class Reader { + constructor(_settings) { + this._settings = _settings; + this._fsStatSettings = new fsStat.Settings({ + followSymbolicLink: this._settings.followSymbolicLinks, + fs: this._settings.fs, + throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks + }); + } + _getFullEntryPath(filepath) { + return path.resolve(this._settings.cwd, filepath); + } + _makeEntry(stats, pattern) { + const entry = { + name: pattern, + path: pattern, + dirent: utils.fs.createDirentFromStats(pattern, stats) + }; + if (this._settings.stats) { + entry.stats = stats; + } + return entry; + } + _isFatalError(error) { + return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors; + } +} +exports.default = Reader; /***/ }), -/***/ "../../node_modules/fast-glob/out/providers/reader-async.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/readers/stream.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - 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); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/index.js"); -var reader_1 = __webpack_require__("../../node_modules/fast-glob/out/providers/reader.js"); -var fs_stream_1 = __webpack_require__("../../node_modules/fast-glob/out/adapters/fs-stream.js"); -var ReaderAsync = /** @class */ (function (_super) { - __extends(ReaderAsync, _super); - function ReaderAsync() { - return _super !== null && _super.apply(this, arguments) || this; - } - Object.defineProperty(ReaderAsync.prototype, "fsAdapter", { - /** - * Returns FileSystem adapter. - */ - get: function () { - return new fs_stream_1.default(this.options); - }, - enumerable: true, - configurable: true - }); - /** - * Use async API to read entries for Task. - */ - ReaderAsync.prototype.read = function (task) { - var _this = this; - var root = this.getRootDirectory(task); - var options = this.getReaderOptions(task); - var entries = []; - return new Promise(function (resolve, reject) { - var stream = _this.api(root, task, options); - stream.on('error', function (err) { - _this.isEnoentCodeError(err) ? resolve([]) : reject(err); - stream.pause(); - }); - stream.on('data', function (entry) { return entries.push(_this.transform(entry)); }); - stream.on('end', function () { return resolve(entries); }); - }); - }; - /** - * Returns founded paths. - */ - ReaderAsync.prototype.api = function (root, task, options) { - if (task.dynamic) { - return this.dynamicApi(root, options); - } - return this.staticApi(task, options); - }; - /** - * Api for dynamic tasks. - */ - ReaderAsync.prototype.dynamicApi = function (root, options) { - return readdir.readdirStreamStat(root, options); - }; - /** - * Api for static tasks. - */ - ReaderAsync.prototype.staticApi = function (task, options) { - return this.fsAdapter.read(task.patterns, options.filter); - }; - return ReaderAsync; -}(reader_1.default)); -exports.default = ReaderAsync; + +Object.defineProperty(exports, "__esModule", { value: true }); +const stream_1 = __webpack_require__("stream"); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const fsWalk = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/index.js"); +const reader_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/reader.js"); +class ReaderStream extends reader_1.default { + constructor() { + super(...arguments); + this._walkStream = fsWalk.walkStream; + this._stat = fsStat.stat; + } + dynamic(root, options) { + return this._walkStream(root, options); + } + static(patterns, options) { + const filepaths = patterns.map(this._getFullEntryPath, this); + const stream = new stream_1.PassThrough({ objectMode: true }); + stream._write = (index, _enc, done) => { + return this._getEntry(filepaths[index], patterns[index], options) + .then((entry) => { + if (entry !== null && options.entryFilter(entry)) { + stream.push(entry); + } + if (index === filepaths.length - 1) { + stream.end(); + } + done(); + }) + .catch(done); + }; + for (let i = 0; i < filepaths.length; i++) { + stream.write(i); + } + return stream; + } + _getEntry(filepath, pattern, options) { + return this._getStat(filepath) + .then((stats) => this._makeEntry(stats, pattern)) + .catch((error) => { + if (options.errorFilter(error)) { + return null; + } + throw error; + }); + } + _getStat(filepath) { + return new Promise((resolve, reject) => { + this._stat(filepath, this._fsStatSettings, (error, stats) => { + return error === null ? resolve(stats) : reject(error); + }); + }); + } +} +exports.default = ReaderStream; /***/ }), -/***/ "../../node_modules/fast-glob/out/providers/reader-stream.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/readers/sync.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - 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); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var stream = __webpack_require__("stream"); -var readdir = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/index.js"); -var reader_1 = __webpack_require__("../../node_modules/fast-glob/out/providers/reader.js"); -var fs_stream_1 = __webpack_require__("../../node_modules/fast-glob/out/adapters/fs-stream.js"); -var TransformStream = /** @class */ (function (_super) { - __extends(TransformStream, _super); - function TransformStream(reader) { - var _this = _super.call(this, { objectMode: true }) || this; - _this.reader = reader; - return _this; - } - TransformStream.prototype._transform = function (entry, _encoding, callback) { - callback(null, this.reader.transform(entry)); - }; - return TransformStream; -}(stream.Transform)); -var ReaderStream = /** @class */ (function (_super) { - __extends(ReaderStream, _super); - function ReaderStream() { - return _super !== null && _super.apply(this, arguments) || this; - } - Object.defineProperty(ReaderStream.prototype, "fsAdapter", { - /** - * Returns FileSystem adapter. - */ - get: function () { - return new fs_stream_1.default(this.options); - }, - enumerable: true, - configurable: true - }); - /** - * Use stream API to read entries for Task. - */ - ReaderStream.prototype.read = function (task) { - var _this = this; - var root = this.getRootDirectory(task); - var options = this.getReaderOptions(task); - var transform = new TransformStream(this); - var readable = this.api(root, task, options); - return readable - .on('error', function (err) { return _this.isEnoentCodeError(err) ? null : transform.emit('error', err); }) - .pipe(transform); - }; - /** - * Returns founded paths. - */ - ReaderStream.prototype.api = function (root, task, options) { - if (task.dynamic) { - return this.dynamicApi(root, options); - } - return this.staticApi(task, options); - }; - /** - * Api for dynamic tasks. - */ - ReaderStream.prototype.dynamicApi = function (root, options) { - return readdir.readdirStreamStat(root, options); - }; - /** - * Api for static tasks. - */ - ReaderStream.prototype.staticApi = function (task, options) { - return this.fsAdapter.read(task.patterns, options.filter); - }; - return ReaderStream; -}(reader_1.default)); -exports.default = ReaderStream; + +Object.defineProperty(exports, "__esModule", { value: true }); +const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); +const fsWalk = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/index.js"); +const reader_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/reader.js"); +class ReaderSync extends reader_1.default { + constructor() { + super(...arguments); + this._walkSync = fsWalk.walkSync; + this._statSync = fsStat.statSync; + } + dynamic(root, options) { + return this._walkSync(root, options); + } + static(patterns, options) { + const entries = []; + for (const pattern of patterns) { + const filepath = this._getFullEntryPath(pattern); + const entry = this._getEntry(filepath, pattern, options); + if (entry === null || !options.entryFilter(entry)) { + continue; + } + entries.push(entry); + } + return entries; + } + _getEntry(filepath, pattern, options) { + try { + const stats = this._getStat(filepath); + return this._makeEntry(stats, pattern); + } + catch (error) { + if (options.errorFilter(error)) { + return null; + } + throw error; + } + } + _getStat(filepath) { + return this._statSync(filepath, this._fsStatSettings); + } +} +exports.default = ReaderSync; /***/ }), -/***/ "../../node_modules/fast-glob/out/providers/reader-sync.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/settings.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -var __extends = (this && this.__extends) || (function () { - 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); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -var readdir = __webpack_require__("../../node_modules/@mrmlnc/readdir-enhanced/lib/index.js"); -var reader_1 = __webpack_require__("../../node_modules/fast-glob/out/providers/reader.js"); -var fs_sync_1 = __webpack_require__("../../node_modules/fast-glob/out/adapters/fs-sync.js"); -var ReaderSync = /** @class */ (function (_super) { - __extends(ReaderSync, _super); - function ReaderSync() { - return _super !== null && _super.apply(this, arguments) || this; - } - Object.defineProperty(ReaderSync.prototype, "fsAdapter", { - /** - * Returns FileSystem adapter. - */ - get: function () { - return new fs_sync_1.default(this.options); - }, - enumerable: true, - configurable: true - }); - /** - * Use sync API to read entries for Task. - */ - ReaderSync.prototype.read = function (task) { - var root = this.getRootDirectory(task); - var options = this.getReaderOptions(task); - try { - var entries = this.api(root, task, options); - return entries.map(this.transform, this); - } - catch (err) { - if (this.isEnoentCodeError(err)) { - return []; - } - throw err; - } - }; - /** - * Returns founded paths. - */ - ReaderSync.prototype.api = function (root, task, options) { - if (task.dynamic) { - return this.dynamicApi(root, options); - } - return this.staticApi(task, options); - }; - /** - * Api for dynamic tasks. - */ - ReaderSync.prototype.dynamicApi = function (root, options) { - return readdir.readdirSyncStat(root, options); - }; - /** - * Api for static tasks. - */ - ReaderSync.prototype.staticApi = function (task, options) { - return this.fsAdapter.read(task.patterns, options.filter); - }; - return ReaderSync; -}(reader_1.default)); -exports.default = ReaderSync; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; +const fs = __webpack_require__("fs"); +const os = __webpack_require__("os"); +/** + * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. + * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 + */ +const CPU_COUNT = Math.max(os.cpus().length, 1); +exports.DEFAULT_FILE_SYSTEM_ADAPTER = { + lstat: fs.lstat, + lstatSync: fs.lstatSync, + stat: fs.stat, + statSync: fs.statSync, + readdir: fs.readdir, + readdirSync: fs.readdirSync +}; +class Settings { + constructor(_options = {}) { + this._options = _options; + this.absolute = this._getValue(this._options.absolute, false); + this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); + this.braceExpansion = this._getValue(this._options.braceExpansion, true); + this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); + this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); + this.cwd = this._getValue(this._options.cwd, process.cwd()); + this.deep = this._getValue(this._options.deep, Infinity); + this.dot = this._getValue(this._options.dot, false); + this.extglob = this._getValue(this._options.extglob, true); + this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); + this.fs = this._getFileSystemMethods(this._options.fs); + this.globstar = this._getValue(this._options.globstar, true); + this.ignore = this._getValue(this._options.ignore, []); + this.markDirectories = this._getValue(this._options.markDirectories, false); + this.objectMode = this._getValue(this._options.objectMode, false); + this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); + this.onlyFiles = this._getValue(this._options.onlyFiles, true); + this.stats = this._getValue(this._options.stats, false); + this.suppressErrors = this._getValue(this._options.suppressErrors, false); + this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); + this.unique = this._getValue(this._options.unique, true); + if (this.onlyDirectories) { + this.onlyFiles = false; + } + if (this.stats) { + this.objectMode = true; + } + } + _getValue(option, value) { + return option === undefined ? value : option; + } + _getFileSystemMethods(methods = {}) { + return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); + } +} +exports.default = Settings; /***/ }), -/***/ "../../node_modules/fast-glob/out/providers/reader.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/array.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var path = __webpack_require__("path"); -var deep_1 = __webpack_require__("../../node_modules/fast-glob/out/providers/filters/deep.js"); -var entry_1 = __webpack_require__("../../node_modules/fast-glob/out/providers/filters/entry.js"); -var pathUtil = __webpack_require__("../../node_modules/fast-glob/out/utils/path.js"); -var Reader = /** @class */ (function () { - function Reader(options) { - this.options = options; - this.micromatchOptions = this.getMicromatchOptions(); - this.entryFilter = new entry_1.default(options, this.micromatchOptions); - this.deepFilter = new deep_1.default(options, this.micromatchOptions); - } - /** - * Returns root path to scanner. - */ - Reader.prototype.getRootDirectory = function (task) { - return path.resolve(this.options.cwd, task.base); - }; - /** - * Returns options for reader. - */ - Reader.prototype.getReaderOptions = function (task) { - return { - basePath: task.base === '.' ? '' : task.base, - filter: this.entryFilter.getFilter(task.positive, task.negative), - deep: this.deepFilter.getFilter(task.positive, task.negative), - sep: '/' - }; - }; - /** - * Returns options for micromatch. - */ - Reader.prototype.getMicromatchOptions = function () { - return { - dot: this.options.dot, - nobrace: !this.options.brace, - noglobstar: !this.options.globstar, - noext: !this.options.extension, - nocase: !this.options.case, - matchBase: this.options.matchBase - }; - }; - /** - * Returns transformed entry. - */ - Reader.prototype.transform = function (entry) { - if (this.options.absolute) { - entry.path = pathUtil.makeAbsolute(this.options.cwd, entry.path); - } - if (this.options.markDirectories && entry.isDirectory()) { - entry.path += '/'; - } - var item = this.options.stats ? entry : entry.path; - if (this.options.transform === null) { - return item; - } - return this.options.transform(item); - }; - /** - * Returns true if error has ENOENT code. - */ - Reader.prototype.isEnoentCodeError = function (err) { - return err.code === 'ENOENT'; - }; - return Reader; -}()); -exports.default = Reader; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitWhen = exports.flatten = void 0; +function flatten(items) { + return items.reduce((collection, item) => [].concat(collection, item), []); +} +exports.flatten = flatten; +function splitWhen(items, predicate) { + const result = [[]]; + let groupIndex = 0; + for (const item of items) { + if (predicate(item)) { + groupIndex++; + result[groupIndex] = []; + } + else { + result[groupIndex].push(item); + } + } + return result; +} +exports.splitWhen = splitWhen; /***/ }), -/***/ "../../node_modules/fast-glob/out/utils/array.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/errno.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * Flatten nested arrays (max depth is 2) into a non-nested array of non-array items. - */ -function flatten(items) { - return items.reduce(function (collection, item) { return [].concat(collection, item); }, []); -} -exports.flatten = flatten; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEnoentCodeError = void 0; +function isEnoentCodeError(error) { + return error.code === 'ENOENT'; +} +exports.isEnoentCodeError = isEnoentCodeError; /***/ }), -/***/ "../../node_modules/fast-glob/out/utils/path.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/fs.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var path = __webpack_require__("path"); -/** - * Returns «true» if the last partial of the path starting with a period. - */ -function isDotDirectory(filepath) { - return path.basename(filepath).startsWith('.'); -} -exports.isDotDirectory = isDotDirectory; -/** - * Convert a windows-like path to a unix-style path. - */ -function normalize(filepath) { - return filepath.replace(/\\/g, '/'); -} -exports.normalize = normalize; -/** - * Returns normalized absolute path of provided filepath. - */ -function makeAbsolute(cwd, filepath) { - return normalize(path.resolve(cwd, filepath)); -} -exports.makeAbsolute = makeAbsolute; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDirentFromStats = void 0; +class DirentFromStats { + constructor(name, stats) { + this.name = name; + this.isBlockDevice = stats.isBlockDevice.bind(stats); + this.isCharacterDevice = stats.isCharacterDevice.bind(stats); + this.isDirectory = stats.isDirectory.bind(stats); + this.isFIFO = stats.isFIFO.bind(stats); + this.isFile = stats.isFile.bind(stats); + this.isSocket = stats.isSocket.bind(stats); + this.isSymbolicLink = stats.isSymbolicLink.bind(stats); + } +} +function createDirentFromStats(name, stats) { + return new DirentFromStats(name, stats); +} +exports.createDirentFromStats = createDirentFromStats; /***/ }), -/***/ "../../node_modules/fast-glob/out/utils/pattern.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var path = __webpack_require__("path"); -var globParent = __webpack_require__("../../node_modules/fast-glob/node_modules/glob-parent/index.js"); -var isGlob = __webpack_require__("../../node_modules/is-glob/index.js"); -var micromatch = __webpack_require__("../../node_modules/micromatch/index.js"); -var GLOBSTAR = '**'; -/** - * Return true for static pattern. - */ -function isStaticPattern(pattern) { - return !isDynamicPattern(pattern); -} -exports.isStaticPattern = isStaticPattern; -/** - * Return true for pattern that looks like glob. - */ -function isDynamicPattern(pattern) { - return isGlob(pattern, { strict: false }); -} -exports.isDynamicPattern = isDynamicPattern; -/** - * Convert a windows «path» to a unix-style «path». - */ -function unixifyPattern(pattern) { - return pattern.replace(/\\/g, '/'); -} -exports.unixifyPattern = unixifyPattern; -/** - * Returns negative pattern as positive pattern. - */ -function convertToPositivePattern(pattern) { - return isNegativePattern(pattern) ? pattern.slice(1) : pattern; -} -exports.convertToPositivePattern = convertToPositivePattern; -/** - * Returns positive pattern as negative pattern. - */ -function convertToNegativePattern(pattern) { - return '!' + pattern; -} -exports.convertToNegativePattern = convertToNegativePattern; -/** - * Return true if provided pattern is negative pattern. - */ -function isNegativePattern(pattern) { - return pattern.startsWith('!') && pattern[1] !== '('; -} -exports.isNegativePattern = isNegativePattern; -/** - * Return true if provided pattern is positive pattern. - */ -function isPositivePattern(pattern) { - return !isNegativePattern(pattern); -} -exports.isPositivePattern = isPositivePattern; -/** - * Extracts negative patterns from array of patterns. - */ -function getNegativePatterns(patterns) { - return patterns.filter(isNegativePattern); -} -exports.getNegativePatterns = getNegativePatterns; -/** - * Extracts positive patterns from array of patterns. - */ -function getPositivePatterns(patterns) { - return patterns.filter(isPositivePattern); -} -exports.getPositivePatterns = getPositivePatterns; -/** - * Extract base directory from provided pattern. - */ -function getBaseDirectory(pattern) { - return globParent(pattern); -} -exports.getBaseDirectory = getBaseDirectory; -/** - * Return true if provided pattern has globstar. - */ -function hasGlobStar(pattern) { - return pattern.indexOf(GLOBSTAR) !== -1; -} -exports.hasGlobStar = hasGlobStar; -/** - * Return true if provided pattern ends with slash and globstar. - */ -function endsWithSlashGlobStar(pattern) { - return pattern.endsWith('/' + GLOBSTAR); -} -exports.endsWithSlashGlobStar = endsWithSlashGlobStar; -/** - * Returns «true» when pattern ends with a slash and globstar or the last partial of the pattern is static pattern. - */ -function isAffectDepthOfReadingPattern(pattern) { - var basename = path.basename(pattern); - return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); -} -exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; -/** - * Return naive depth of provided pattern without depth of the base directory. - */ -function getNaiveDepth(pattern) { - var base = getBaseDirectory(pattern); - var patternDepth = pattern.split('/').length; - var patternBaseDepth = base.split('/').length; - /** - * This is a hack for pattern that has no base directory. - * - * This is related to the `*\something\*` pattern. - */ - if (base === '.') { - return patternDepth - patternBaseDepth; - } - return patternDepth - patternBaseDepth - 1; -} -exports.getNaiveDepth = getNaiveDepth; -/** - * Return max naive depth of provided patterns without depth of the base directory. - */ -function getMaxNaivePatternsDepth(patterns) { - return patterns.reduce(function (max, pattern) { - var depth = getNaiveDepth(pattern); - return depth > max ? depth : max; - }, 0); -} -exports.getMaxNaivePatternsDepth = getMaxNaivePatternsDepth; -/** - * Make RegExp for provided pattern. - */ -function makeRe(pattern, options) { - return micromatch.makeRe(pattern, options); -} -exports.makeRe = makeRe; -/** - * Convert patterns to regexps. - */ -function convertPatternsToRe(patterns, options) { - return patterns.map(function (pattern) { return makeRe(pattern, options); }); -} -exports.convertPatternsToRe = convertPatternsToRe; -/** - * Returns true if the entry match any of the given RegExp's. - */ -function matchAny(entry, patternsRe) { - return patternsRe.some(function (patternRe) { return patternRe.test(entry); }); -} -exports.matchAny = matchAny; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; +const array = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/array.js"); +exports.array = array; +const errno = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/errno.js"); +exports.errno = errno; +const fs = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/fs.js"); +exports.fs = fs; +const path = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/path.js"); +exports.path = path; +const pattern = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/pattern.js"); +exports.pattern = pattern; +const stream = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/stream.js"); +exports.stream = stream; +const string = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/string.js"); +exports.string = string; /***/ }), -/***/ "../../node_modules/fast-glob/out/utils/stream.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/path.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -var merge2 = __webpack_require__("../../node_modules/merge2/index.js"); -/** - * Merge multiple streams and propagate their errors into one stream in parallel. - */ -function merge(streams) { - var mergedStream = merge2(streams); - streams.forEach(function (stream) { - stream.on('error', function (err) { return mergedStream.emit('error', err); }); - }); - return mergedStream; -} -exports.merge = merge; + +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0; +const path = __webpack_require__("path"); +const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\ +const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g; +/** + * Designed to work only with simple paths: `dir\\file`. + */ +function unixify(filepath) { + return filepath.replace(/\\/g, '/'); +} +exports.unixify = unixify; +function makeAbsolute(cwd, filepath) { + return path.resolve(cwd, filepath); +} +exports.makeAbsolute = makeAbsolute; +function escape(pattern) { + return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); +} +exports.escape = escape; +function removeLeadingDotSegment(entry) { + // We do not use `startsWith` because this is 10x slower than current implementation for some cases. + // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with + if (entry.charAt(0) === '.') { + const secondCharactery = entry.charAt(1); + if (secondCharactery === '/' || secondCharactery === '\\') { + return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); + } + } + return entry; +} +exports.removeLeadingDotSegment = removeLeadingDotSegment; /***/ }), -/***/ "../../node_modules/fastq/queue.js": +/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/pattern.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; +const path = __webpack_require__("path"); +const globParent = __webpack_require__("../../node_modules/glob-parent/index.js"); +const micromatch = __webpack_require__("../../node_modules/globby/node_modules/micromatch/index.js"); +const GLOBSTAR = '**'; +const ESCAPE_SYMBOL = '\\'; +const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; +const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[.*]/; +const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\(.*\|.*\)/; +const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\(.*\)/; +const BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\.\.).*}/; +function isStaticPattern(pattern, options = {}) { + return !isDynamicPattern(pattern, options); +} +exports.isStaticPattern = isStaticPattern; +function isDynamicPattern(pattern, options = {}) { + /** + * A special case with an empty string is necessary for matching patterns that start with a forward slash. + * An empty string cannot be a dynamic pattern. + * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'. + */ + if (pattern === '') { + return false; + } + /** + * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check + * filepath directly (without read directory). + */ + if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { + return true; + } + if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { + return true; + } + if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) { + return true; + } + return false; +} +exports.isDynamicPattern = isDynamicPattern; +function convertToPositivePattern(pattern) { + return isNegativePattern(pattern) ? pattern.slice(1) : pattern; +} +exports.convertToPositivePattern = convertToPositivePattern; +function convertToNegativePattern(pattern) { + return '!' + pattern; +} +exports.convertToNegativePattern = convertToNegativePattern; +function isNegativePattern(pattern) { + return pattern.startsWith('!') && pattern[1] !== '('; +} +exports.isNegativePattern = isNegativePattern; +function isPositivePattern(pattern) { + return !isNegativePattern(pattern); +} +exports.isPositivePattern = isPositivePattern; +function getNegativePatterns(patterns) { + return patterns.filter(isNegativePattern); +} +exports.getNegativePatterns = getNegativePatterns; +function getPositivePatterns(patterns) { + return patterns.filter(isPositivePattern); +} +exports.getPositivePatterns = getPositivePatterns; +/** + * Returns patterns that can be applied inside the current directory. + * + * @example + * // ['./*', '*', 'a/*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +function getPatternsInsideCurrentDirectory(patterns) { + return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); +} +exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; +/** + * Returns patterns to be expanded relative to (outside) the current directory. + * + * @example + * // ['../*', './../*'] + * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) + */ +function getPatternsOutsideCurrentDirectory(patterns) { + return patterns.filter(isPatternRelatedToParentDirectory); +} +exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; +function isPatternRelatedToParentDirectory(pattern) { + return pattern.startsWith('..') || pattern.startsWith('./..'); +} +exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; +function getBaseDirectory(pattern) { + return globParent(pattern, { flipBackslashes: false }); +} +exports.getBaseDirectory = getBaseDirectory; +function hasGlobStar(pattern) { + return pattern.includes(GLOBSTAR); +} +exports.hasGlobStar = hasGlobStar; +function endsWithSlashGlobStar(pattern) { + return pattern.endsWith('/' + GLOBSTAR); +} +exports.endsWithSlashGlobStar = endsWithSlashGlobStar; +function isAffectDepthOfReadingPattern(pattern) { + const basename = path.basename(pattern); + return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); +} +exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; +function expandPatternsWithBraceExpansion(patterns) { + return patterns.reduce((collection, pattern) => { + return collection.concat(expandBraceExpansion(pattern)); + }, []); +} +exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; +function expandBraceExpansion(pattern) { + return micromatch.braces(pattern, { + expand: true, + nodupes: true + }); +} +exports.expandBraceExpansion = expandBraceExpansion; +function getPatternParts(pattern, options) { + let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); + /** + * The scan method returns an empty array in some cases. + * See micromatch/picomatch#58 for more details. + */ + if (parts.length === 0) { + parts = [pattern]; + } + /** + * The scan method does not return an empty part for the pattern with a forward slash. + * This is another part of micromatch/picomatch#58. + */ + if (parts[0].startsWith('/')) { + parts[0] = parts[0].slice(1); + parts.unshift(''); + } + return parts; +} +exports.getPatternParts = getPatternParts; +function makeRe(pattern, options) { + return micromatch.makeRe(pattern, options); +} +exports.makeRe = makeRe; +function convertPatternsToRe(patterns, options) { + return patterns.map((pattern) => makeRe(pattern, options)); +} +exports.convertPatternsToRe = convertPatternsToRe; +function matchAny(entry, patternsRe) { + return patternsRe.some((patternRe) => patternRe.test(entry)); +} +exports.matchAny = matchAny; -var reusify = __webpack_require__("../../node_modules/reusify/reusify.js") -function fastqueue (context, worker, concurrency) { - if (typeof context === 'function') { - concurrency = worker - worker = context - context = null - } +/***/ }), - var cache = reusify(Task) - var queueHead = null - var queueTail = null - var _running = 0 +/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/stream.js": +/***/ (function(module, exports, __webpack_require__) { - var self = { - push: push, - drain: noop, - saturated: noop, - pause: pause, - paused: false, - concurrency: concurrency, - running: running, - resume: resume, - idle: idle, - length: length, - unshift: unshift, - empty: noop, - kill: kill, - killAndDrain: killAndDrain - } +"use strict"; - return self +Object.defineProperty(exports, "__esModule", { value: true }); +exports.merge = void 0; +const merge2 = __webpack_require__("../../node_modules/merge2/index.js"); +function merge(streams) { + const mergedStream = merge2(streams); + streams.forEach((stream) => { + stream.once('error', (error) => mergedStream.emit('error', error)); + }); + mergedStream.once('close', () => propagateCloseEventToSources(streams)); + mergedStream.once('end', () => propagateCloseEventToSources(streams)); + return mergedStream; +} +exports.merge = merge; +function propagateCloseEventToSources(streams) { + streams.forEach((stream) => stream.emit('close')); +} - function running () { - return _running - } - function pause () { - self.paused = true - } +/***/ }), - function length () { - var current = queueHead - var counter = 0 +/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/string.js": +/***/ (function(module, exports, __webpack_require__) { - while (current) { - current = current.next - counter++ - } +"use strict"; - return counter - } +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isEmpty = exports.isString = void 0; +function isString(input) { + return typeof input === 'string'; +} +exports.isString = isString; +function isEmpty(input) { + return input === ''; +} +exports.isEmpty = isEmpty; - function resume () { - if (!self.paused) return - self.paused = false - for (var i = 0; i < self.concurrency; i++) { - _running++ - release() - } - } - function idle () { - return _running === 0 && self.length() === 0 - } +/***/ }), - function push (value, done) { - var current = cache.get() +/***/ "../../node_modules/globby/node_modules/micromatch/index.js": +/***/ (function(module, exports, __webpack_require__) { - current.context = context - current.release = release - current.value = value - current.callback = done || noop +"use strict"; - if (_running === self.concurrency || self.paused) { - if (queueTail) { - queueTail.next = current - queueTail = current - } else { - queueHead = current - queueTail = current - self.saturated() - } - } else { - _running++ - worker.call(context, current.value, current.worked) - } - } - function unshift (value, done) { - var current = cache.get() +const util = __webpack_require__("util"); +const braces = __webpack_require__("../../node_modules/braces/index.js"); +const picomatch = __webpack_require__("../../node_modules/picomatch/index.js"); +const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); +const isEmptyString = val => val === '' || val === './'; - current.context = context - current.release = release - current.value = value - current.callback = done || noop +/** + * Returns an array of strings that match one or more glob patterns. + * + * ```js + * const mm = require('micromatch'); + * // mm(list, patterns[, options]); + * + * console.log(mm(['a.js', 'a.txt'], ['*.js'])); + * //=> [ 'a.js' ] + * ``` + * @param {String|Array} `list` List of strings to match. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) + * @return {Array} Returns an array of matches + * @summary false + * @api public + */ - if (_running === self.concurrency || self.paused) { - if (queueHead) { - current.next = queueHead - queueHead = current - } else { - queueHead = current - queueTail = current - self.saturated() - } - } else { - _running++ - worker.call(context, current.value, current.worked) - } - } +const micromatch = (list, patterns, options) => { + patterns = [].concat(patterns); + list = [].concat(list); - function release (holder) { - if (holder) { - cache.release(holder) + let omit = new Set(); + let keep = new Set(); + let items = new Set(); + let negatives = 0; + + let onResult = state => { + items.add(state.output); + if (options && options.onResult) { + options.onResult(state); } - var next = queueHead - if (next) { - if (!self.paused) { - if (queueTail === queueHead) { - queueTail = null - } - queueHead = next.next - next.next = null - worker.call(context, next.value, next.worked) - if (queueTail === null) { - self.empty() - } + }; + + for (let i = 0; i < patterns.length; i++) { + let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); + let negated = isMatch.state.negated || isMatch.state.negatedExtglob; + if (negated) negatives++; + + for (let item of list) { + let matched = isMatch(item, true); + + let match = negated ? !matched.isMatch : matched.isMatch; + if (!match) continue; + + if (negated) { + omit.add(matched.output); } else { - _running-- + omit.delete(matched.output); + keep.add(matched.output); } - } else if (--_running === 0) { - self.drain() } } - function kill () { - queueHead = null - queueTail = null - self.drain = noop - } - - function killAndDrain () { - queueHead = null - queueTail = null - self.drain() - self.drain = noop - } -} - -function noop () {} - -function Task () { - this.value = null - this.callback = noop - this.next = null - this.release = noop - this.context = null + let result = negatives === patterns.length ? [...items] : [...keep]; + let matches = result.filter(item => !omit.has(item)); - var self = this + if (options && matches.length === 0) { + if (options.failglob === true) { + throw new Error(`No matches found for "${patterns.join(', ')}"`); + } - this.worked = function worked (err, result) { - var callback = self.callback - self.value = null - self.callback = noop - callback.call(self.context, err, result) - self.release(self) + if (options.nonull === true || options.nullglob === true) { + return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns; + } } -} - -module.exports = fastqueue + return matches; +}; -/***/ }), +/** + * Backwards compatibility + */ -/***/ "../../node_modules/fill-range/index.js": -/***/ (function(module, exports, __webpack_require__) { +micromatch.match = micromatch; -"use strict"; -/*! - * fill-range +/** + * Returns a matcher function from the given glob `pattern` and `options`. + * The returned function takes a string to match as its only argument and returns + * true if the string is a match. * - * Copyright (c) 2014-present, Jon Schlinkert. - * Licensed under the MIT License. + * ```js + * const mm = require('micromatch'); + * // mm.matcher(pattern[, options]); + * + * const isMatch = mm.matcher('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @param {String} `pattern` Glob pattern + * @param {Object} `options` + * @return {Function} Returns a matcher function. + * @api public */ +micromatch.matcher = (pattern, options) => picomatch(pattern, options); +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const mm = require('micromatch'); + * // mm.isMatch(string, patterns[, options]); + * + * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(mm.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `[options]` See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ -const util = __webpack_require__("util"); -const toRegexRange = __webpack_require__("../../node_modules/to-regex-range/index.js"); - -const isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); +micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); -const transform = toNumber => { - return value => toNumber === true ? Number(value) : String(value); -}; +/** + * Backwards compatibility + */ -const isValidValue = value => { - return typeof value === 'number' || (typeof value === 'string' && value !== ''); -}; +micromatch.any = micromatch.isMatch; -const isNumber = num => Number.isInteger(+num); +/** + * Returns a list of strings that _**do not match any**_ of the given `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.not(list, patterns[, options]); + * + * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); + * //=> ['b.b', 'c.c'] + * ``` + * @param {Array} `list` Array of strings to match. + * @param {String|Array} `patterns` One or more glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array} Returns an array of strings that **do not match** the given patterns. + * @api public + */ -const zeros = input => { - let value = `${input}`; - let index = -1; - if (value[0] === '-') value = value.slice(1); - if (value === '0') return false; - while (value[++index] === '0'); - return index > 0; -}; +micromatch.not = (list, patterns, options = {}) => { + patterns = [].concat(patterns).map(String); + let result = new Set(); + let items = []; -const stringify = (start, end, options) => { - if (typeof start === 'string' || typeof end === 'string') { - return true; - } - return options.stringify === true; -}; + let onResult = state => { + if (options.onResult) options.onResult(state); + items.push(state.output); + }; -const pad = (input, maxLength, toNumber) => { - if (maxLength > 0) { - let dash = input[0] === '-' ? '-' : ''; - if (dash) input = input.slice(1); - input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0')); - } - if (toNumber === false) { - return String(input); - } - return input; -}; + let matches = micromatch(list, patterns, { ...options, onResult }); -const toMaxLen = (input, maxLength) => { - let negative = input[0] === '-' ? '-' : ''; - if (negative) { - input = input.slice(1); - maxLength--; + for (let item of items) { + if (!matches.includes(item)) { + result.add(item); + } } - while (input.length < maxLength) input = '0' + input; - return negative ? ('-' + input) : input; + return [...result]; }; -const toSequence = (parts, options) => { - parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); - parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); - - let prefix = options.capture ? '' : '?:'; - let positives = ''; - let negatives = ''; - let result; +/** + * Returns true if the given `string` contains the given pattern. Similar + * to [.isMatch](#isMatch) but the pattern can match any part of the string. + * + * ```js + * var mm = require('micromatch'); + * // mm.contains(string, pattern[, options]); + * + * console.log(mm.contains('aa/bb/cc', '*b')); + * //=> true + * console.log(mm.contains('aa/bb/cc', '*d')); + * //=> false + * ``` + * @param {String} `str` The string to match. + * @param {String|Array} `patterns` Glob pattern to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any of the patterns matches any part of `str`. + * @api public + */ - if (parts.positives.length) { - positives = parts.positives.join('|'); +micromatch.contains = (str, pattern, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); } - if (parts.negatives.length) { - negatives = `-(${prefix}${parts.negatives.join('|')})`; + if (Array.isArray(pattern)) { + return pattern.some(p => micromatch.contains(str, p, options)); } - if (positives && negatives) { - result = `${positives}|${negatives}`; - } else { - result = positives || negatives; - } + if (typeof pattern === 'string') { + if (isEmptyString(str) || isEmptyString(pattern)) { + return false; + } - if (options.wrap) { - return `(${prefix}${result})`; + if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) { + return true; + } } - return result; + return micromatch.isMatch(str, pattern, { ...options, contains: true }); }; -const toRange = (a, b, isNumbers, options) => { - if (isNumbers) { - return toRegexRange(a, b, { wrap: false, ...options }); +/** + * Filter the keys of the given object with the given `glob` pattern + * and `options`. Does not attempt to match nested keys. If you need this feature, + * use [glob-object][] instead. + * + * ```js + * const mm = require('micromatch'); + * // mm.matchKeys(object, patterns[, options]); + * + * const obj = { aa: 'a', ab: 'b', ac: 'c' }; + * console.log(mm.matchKeys(obj, '*b')); + * //=> { ab: 'b' } + * ``` + * @param {Object} `object` The object with keys to filter. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Object} Returns an object with only keys that match the given patterns. + * @api public + */ + +micromatch.matchKeys = (obj, patterns, options) => { + if (!utils.isObject(obj)) { + throw new TypeError('Expected the first argument to be an object'); } + let keys = micromatch(Object.keys(obj), patterns, options); + let res = {}; + for (let key of keys) res[key] = obj[key]; + return res; +}; - let start = String.fromCharCode(a); - if (a === b) return start; +/** + * Returns true if some of the strings in the given `list` match any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.some(list, patterns[, options]); + * + * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // true + * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list` + * @api public + */ - let stop = String.fromCharCode(b); - return `[${start}-${stop}]`; -}; +micromatch.some = (list, patterns, options) => { + let items = [].concat(list); -const toRegex = (start, end, options) => { - if (Array.isArray(start)) { - let wrap = options.wrap === true; - let prefix = options.capture ? '' : '?:'; - return wrap ? `(${prefix}${start.join('|')})` : start.join('|'); + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (items.some(item => isMatch(item))) { + return true; + } } - return toRegexRange(start, end, options); + return false; }; -const rangeError = (...args) => { - return new RangeError('Invalid range arguments: ' + util.inspect(...args)); -}; +/** + * Returns true if every string in the given `list` matches + * any of the given glob `patterns`. + * + * ```js + * const mm = require('micromatch'); + * // mm.every(list, patterns[, options]); + * + * console.log(mm.every('foo.js', ['foo.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); + * // true + * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); + * // false + * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); + * // false + * ``` + * @param {String|Array} `list` The string or array of strings to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list` + * @api public + */ -const invalidRange = (start, end, options) => { - if (options.strictRanges === true) throw rangeError([start, end]); - return []; -}; +micromatch.every = (list, patterns, options) => { + let items = [].concat(list); -const invalidStep = (step, options) => { - if (options.strictRanges === true) { - throw new TypeError(`Expected step "${step}" to be a number`); + for (let pattern of [].concat(patterns)) { + let isMatch = picomatch(String(pattern), options); + if (!items.every(item => isMatch(item))) { + return false; + } } - return []; + return true; }; -const fillNumbers = (start, end, step = 1, options = {}) => { - let a = Number(start); - let b = Number(end); +/** + * Returns true if **all** of the given `patterns` match + * the specified string. + * + * ```js + * const mm = require('micromatch'); + * // mm.all(string, patterns[, options]); + * + * console.log(mm.all('foo.js', ['foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); + * // false + * + * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); + * // true + * + * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); + * // true + * ``` + * @param {String|Array} `str` The string to test. + * @param {String|Array} `patterns` One or more glob patterns to use for matching. + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ - if (!Number.isInteger(a) || !Number.isInteger(b)) { - if (options.strictRanges === true) throw rangeError([start, end]); - return []; +micromatch.all = (str, patterns, options) => { + if (typeof str !== 'string') { + throw new TypeError(`Expected a string: "${util.inspect(str)}"`); } - // fix negative zero - if (a === 0) a = 0; - if (b === 0) b = 0; + return [].concat(patterns).every(p => picomatch(p, options)(str)); +}; - let descending = a > b; - let startString = String(start); - let endString = String(end); - let stepString = String(step); - step = Math.max(Math.abs(step), 1); +/** + * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. + * + * ```js + * const mm = require('micromatch'); + * // mm.capture(pattern, string[, options]); + * + * console.log(mm.capture('test/*.js', 'test/foo.js')); + * //=> ['foo'] + * console.log(mm.capture('test/*.js', 'foo/bar.css')); + * //=> null + * ``` + * @param {String} `glob` Glob pattern to use for matching. + * @param {String} `input` String to match + * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`. + * @api public + */ - let padded = zeros(startString) || zeros(endString) || zeros(stepString); - let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; - let toNumber = padded === false && stringify(start, end, options) === false; - let format = options.transform || transform(toNumber); +micromatch.capture = (glob, input, options) => { + let posix = utils.isWindows(options); + let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); + let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); - if (options.toRegex && step === 1) { - return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); - } - - let parts = { negatives: [], positives: [] }; - let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num)); - let range = []; - let index = 0; - - while (descending ? a >= b : a <= b) { - if (options.toRegex === true && step > 1) { - push(a); - } else { - range.push(pad(format(a, index), maxLen, toNumber)); - } - a = descending ? a - step : a + step; - index++; - } - - if (options.toRegex === true) { - return step > 1 - ? toSequence(parts, options) - : toRegex(range, null, { wrap: false, ...options }); + if (match) { + return match.slice(1).map(v => v === void 0 ? '' : v); } - - return range; }; -const fillLetters = (start, end, step = 1, options = {}) => { - if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) { - return invalidRange(start, end, options); - } +/** + * Create a regular expression from the given glob `pattern`. + * + * ```js + * const mm = require('micromatch'); + * // mm.makeRe(pattern[, options]); + * + * console.log(mm.makeRe('*.js')); + * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ + * ``` + * @param {String} `pattern` A glob pattern to convert to regex. + * @param {Object} `options` + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ +micromatch.makeRe = (...args) => picomatch.makeRe(...args); - let format = options.transform || (val => String.fromCharCode(val)); - let a = `${start}`.charCodeAt(0); - let b = `${end}`.charCodeAt(0); +/** + * Scan a glob pattern to separate the pattern into segments. Used + * by the [split](#split) method. + * + * ```js + * const mm = require('micromatch'); + * const state = mm.scan(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ - let descending = a > b; - let min = Math.min(a, b); - let max = Math.max(a, b); +micromatch.scan = (...args) => picomatch.scan(...args); - if (options.toRegex && step === 1) { - return toRange(min, max, false, options); +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const mm = require('micromatch'); + * const state = mm(pattern[, options]); + * ``` + * @param {String} `glob` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as regex source string. + * @api public + */ + +micromatch.parse = (patterns, options) => { + let res = []; + for (let pattern of [].concat(patterns || [])) { + for (let str of braces(String(pattern), options)) { + res.push(picomatch.parse(str, options)); + } } + return res; +}; - let range = []; - let index = 0; +/** + * Process the given brace `pattern`. + * + * ```js + * const { braces } = require('micromatch'); + * console.log(braces('foo/{a,b,c}/bar')); + * //=> [ 'foo/(a|b|c)/bar' ] + * + * console.log(braces('foo/{a,b,c}/bar', { expand: true })); + * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] + * ``` + * @param {String} `pattern` String with brace pattern to process. + * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. + * @return {Array} + * @api public + */ - while (descending ? a >= b : a <= b) { - range.push(format(a, index)); - a = descending ? a - step : a + step; - index++; +micromatch.braces = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + if ((options && options.nobrace === true) || !/\{.*\}/.test(pattern)) { + return [pattern]; } + return braces(pattern, options); +}; - if (options.toRegex === true) { - return toRegex(range, null, { wrap: false, options }); - } +/** + * Expand braces + */ - return range; +micromatch.braceExpand = (pattern, options) => { + if (typeof pattern !== 'string') throw new TypeError('Expected a string'); + return micromatch.braces(pattern, { ...options, expand: true }); }; -const fill = (start, end, step, options = {}) => { - if (end == null && isValidValue(start)) { - return [start]; - } +/** + * Expose micromatch + */ - if (!isValidValue(start) || !isValidValue(end)) { - return invalidRange(start, end, options); - } +module.exports = micromatch; - if (typeof step === 'function') { - return fill(start, end, 1, { transform: step }); - } - if (isObject(step)) { - return fill(start, end, 0, step); - } +/***/ }), - let opts = { ...options }; - if (opts.capture === true) opts.wrap = true; - step = step || opts.step || 1; +/***/ "../../node_modules/globby/stream-utils.js": +/***/ (function(module, exports, __webpack_require__) { - if (!isNumber(step)) { - if (step != null && !isObject(step)) return invalidStep(step, opts); - return fill(start, end, 1, step); - } +"use strict"; - if (isNumber(start) && isNumber(end)) { - return fillNumbers(start, end, step, opts); - } +const {Transform} = __webpack_require__("stream"); - return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); -}; +class ObjectTransform extends Transform { + constructor() { + super({ + objectMode: true + }); + } +} -module.exports = fill; +class FilterStream extends ObjectTransform { + constructor(filter) { + super(); + this._filter = filter; + } + _transform(data, encoding, callback) { + if (this._filter(data)) { + this.push(data); + } -/***/ }), + callback(); + } +} -/***/ "../../node_modules/follow-redirects/debug.js": -/***/ (function(module, exports, __webpack_require__) { +class UniqueStream extends ObjectTransform { + constructor() { + super(); + this._pushed = new Set(); + } -var debug; + _transform(data, encoding, callback) { + if (!this._pushed.has(data)) { + this.push(data); + this._pushed.add(data); + } -module.exports = function () { - if (!debug) { - try { - /* eslint global-require: off */ - debug = __webpack_require__("../../node_modules/debug/src/index.js")("follow-redirects"); - } - catch (error) { /* */ } - if (typeof debug !== "function") { - debug = function () { /* */ }; - } - } - debug.apply(null, arguments); + callback(); + } +} + +module.exports = { + FilterStream, + UniqueStream }; /***/ }), -/***/ "../../node_modules/follow-redirects/index.js": +/***/ "../../node_modules/graceful-fs/clone.js": /***/ (function(module, exports, __webpack_require__) { -var url = __webpack_require__("url"); -var URL = url.URL; -var http = __webpack_require__("http"); -var https = __webpack_require__("https"); -var Writable = __webpack_require__("stream").Writable; -var assert = __webpack_require__("assert"); -var debug = __webpack_require__("../../node_modules/follow-redirects/debug.js"); +"use strict"; -// Create handlers that pass events from native requests -var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; -var eventHandlers = Object.create(null); -events.forEach(function (event) { - eventHandlers[event] = function (arg1, arg2, arg3) { - this._redirectable.emit(event, arg1, arg2, arg3); - }; -}); -// Error types with codes -var RedirectionError = createErrorType( - "ERR_FR_REDIRECTION_FAILURE", - "Redirected request failed" -); -var TooManyRedirectsError = createErrorType( - "ERR_FR_TOO_MANY_REDIRECTS", - "Maximum number of redirects exceeded" -); -var MaxBodyLengthExceededError = createErrorType( - "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", - "Request body larger than maxBodyLength limit" -); -var WriteAfterEndError = createErrorType( - "ERR_STREAM_WRITE_AFTER_END", - "write after end" -); +module.exports = clone -// An HTTP(S) request that can be redirected -function RedirectableRequest(options, responseCallback) { - // Initialize the request - Writable.call(this); - this._sanitizeOptions(options); - this._options = options; - this._ended = false; - this._ending = false; - this._redirectCount = 0; - this._redirects = []; - this._requestBodyLength = 0; - this._requestBodyBuffers = []; +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj - // Attach a callback if passed - if (responseCallback) { - this.on("response", responseCallback); - } + if (obj instanceof Object) + var copy = { __proto__: obj.__proto__ } + else + var copy = Object.create(null) - // React to responses of native requests - var self = this; - this._onNativeResponse = function (response) { - self._processResponse(response); - }; + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) - // Perform the first request - this._performRequest(); + return copy } -RedirectableRequest.prototype = Object.create(Writable.prototype); -RedirectableRequest.prototype.abort = function () { - abortRequest(this._currentRequest); - this.emit("abort"); -}; -// Writes buffered data to the current native request -RedirectableRequest.prototype.write = function (data, encoding, callback) { - // Writing is not allowed if end has been called - if (this._ending) { - throw new WriteAfterEndError(); - } +/***/ }), - // Validate input and shift parameters if necessary - if (!(typeof data === "string" || typeof data === "object" && ("length" in data))) { - throw new TypeError("data should be a string, Buffer or Uint8Array"); - } - if (typeof encoding === "function") { - callback = encoding; - encoding = null; - } +/***/ "../../node_modules/graceful-fs/graceful-fs.js": +/***/ (function(module, exports, __webpack_require__) { - // Ignore empty buffers, since writing them doesn't invoke the callback - // https://github.com/nodejs/node/issues/22066 - if (data.length === 0) { - if (callback) { - callback(); - } - return; - } - // Only write when we don't exceed the maximum body length - if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { - this._requestBodyLength += data.length; - this._requestBodyBuffers.push({ data: data, encoding: encoding }); - this._currentRequest.write(data, encoding, callback); - } - // Error when we exceed the maximum body length - else { - this.emit("error", new MaxBodyLengthExceededError()); - this.abort(); - } -}; +var fs = __webpack_require__("fs") +var polyfills = __webpack_require__("../../node_modules/graceful-fs/polyfills.js") +var legacy = __webpack_require__("../../node_modules/graceful-fs/legacy-streams.js") +var clone = __webpack_require__("../../node_modules/graceful-fs/clone.js") -// Ends the current native request -RedirectableRequest.prototype.end = function (data, encoding, callback) { - // Shift parameters if necessary - if (typeof data === "function") { - callback = data; - data = encoding = null; - } - else if (typeof encoding === "function") { - callback = encoding; - encoding = null; - } +var util = __webpack_require__("util") - // Write data if needed and end - if (!data) { - this._ended = this._ending = true; - this._currentRequest.end(null, null, callback); - } - else { - var self = this; - var currentRequest = this._currentRequest; - this.write(data, encoding, function () { - self._ended = true; - currentRequest.end(null, null, callback); - }); - this._ending = true; - } -}; +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol -// Sets a header value on the current native request -RedirectableRequest.prototype.setHeader = function (name, value) { - this._options.headers[name] = value; - this._currentRequest.setHeader(name, value); -}; +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} -// Clears a header value on the current native request -RedirectableRequest.prototype.removeHeader = function (name) { - delete this._options.headers[name]; - this._currentRequest.removeHeader(name); -}; +function noop () {} -// Global timeout for all underlying requests -RedirectableRequest.prototype.setTimeout = function (msecs, callback) { - var self = this; +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} - // Destroys the socket on timeout - function destroyOnTimeout(socket) { - socket.setTimeout(msecs); - socket.removeListener("timeout", socket.destroy); - socket.addListener("timeout", socket.destroy); +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) } - // Sets up a timer to trigger a timeout event - function startTimer(socket) { - if (self._timeout) { - clearTimeout(self._timeout); - } - self._timeout = setTimeout(function () { - self.emit("timeout"); - clearTimer(); - }, msecs); - destroyOnTimeout(socket); - } +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) - // Stops a timeout from triggering - function clearTimer() { - // Clear the timeout - if (self._timeout) { - clearTimeout(self._timeout); - self._timeout = null; - } + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + retry() + } - // Clean up all attached listeners - self.removeListener("abort", clearTimer); - self.removeListener("error", clearTimer); - self.removeListener("response", clearTimer); - if (callback) { - self.removeListener("timeout", callback); + if (typeof cb === 'function') + cb.apply(this, arguments) + }) } - if (!self.socket) { - self._currentRequest.removeListener("socket", startTimer); + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + retry() } - } - // Attach callback if passed - if (callback) { - this.on("timeout", callback); - } + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) - // Start the timer if or when the socket is opened - if (this.socket) { - startTimer(this.socket); - } - else { - this._currentRequest.once("socket", startTimer); + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + __webpack_require__("assert").equal(fs[gracefulQueue].length, 0) + }) } +} - // Clean up on events - this.on("socket", destroyOnTimeout); - this.on("abort", clearTimer); - this.on("error", clearTimer); - this.on("response", clearTimer); +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} - return this; -}; +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} -// Proxy all other public ClientRequest methods -[ - "flushHeaders", "getHeader", - "setNoDelay", "setSocketKeepAlive", -].forEach(function (method) { - RedirectableRequest.prototype[method] = function (a, b) { - return this._currentRequest[method](a, b); - }; -}); +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch -// Proxy all public ClientRequest properties -["aborted", "connection", "socket"].forEach(function (property) { - Object.defineProperty(RedirectableRequest.prototype, property, { - get: function () { return this._currentRequest[property]; }, - }); -}); + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null -RedirectableRequest.prototype._sanitizeOptions = function (options) { - // Ensure headers are always present - if (!options.headers) { - options.headers = {}; - } + return go$readFile(path, options, cb) - // Since http.request treats host as an alias of hostname, - // but the url module interprets host as hostname plus port, - // eliminate the host property to avoid confusion. - if (options.host) { - // Use hostname if set, because it has precedence - if (!options.hostname) { - options.hostname = options.host; + function go$readFile (path, options, cb) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb]]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + retry() + } + }) } - delete options.host; } - // Complete the URL object when necessary - if (!options.pathname && options.path) { - var searchPos = options.path.indexOf("?"); - if (searchPos < 0) { - options.pathname = options.path; - } - else { - options.pathname = options.path.substring(0, searchPos); - options.search = options.path.substring(searchPos); + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb]]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + retry() + } + }) } } -}; + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null -// Executes the next native request (initial or redirect) -RedirectableRequest.prototype._performRequest = function () { - // Load the native protocol - var protocol = this._options.protocol; - var nativeProtocol = this._options.nativeProtocols[protocol]; - if (!nativeProtocol) { - this.emit("error", new TypeError("Unsupported protocol " + protocol)); - return; - } + return go$appendFile(path, data, options, cb) - // If specified, use the agent corresponding to the protocol - // (HTTP and HTTPS use different types of agents) - if (this._options.agents) { - var scheme = protocol.substr(0, protocol.length - 1); - this._options.agent = this._options.agents[scheme]; + function go$appendFile (path, data, options, cb) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb]]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + retry() + } + }) + } } - // Create the native request - var request = this._currentRequest = - nativeProtocol.request(this._options, this._onNativeResponse); - this._currentUrl = url.format(this._options); + var fs$readdir = fs.readdir + fs.readdir = readdir + function readdir (path, options, cb) { + var args = [path] + if (typeof options !== 'function') { + args.push(options) + } else { + cb = options + } + args.push(go$readdir$cb) - // Set up event handlers - request._redirectable = this; - for (var e = 0; e < events.length; e++) { - request.on(events[e], eventHandlers[events[e]]); - } + return go$readdir(args) - // End a redirected request - // (The first request must be ended explicitly with RedirectableRequest#end) - if (this._isRedirect) { - // Write the request entity and end. - var i = 0; - var self = this; - var buffers = this._requestBodyBuffers; - (function writeNext(error) { - // Only write if this request has not been redirected yet - /* istanbul ignore else */ - if (request === self._currentRequest) { - // Report any write errors - /* istanbul ignore if */ - if (error) { - self.emit("error", error); - } - // Write the next buffer if there are still left - else if (i < buffers.length) { - var buffer = buffers[i++]; - /* istanbul ignore else */ - if (!request.finished) { - request.write(buffer.data, buffer.encoding, writeNext); - } - } - // End the request if `end` has been called on us - else if (self._ended) { - request.end(); - } + function go$readdir$cb (err, files) { + if (files && files.sort) + files.sort() + + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readdir, [args]]) + + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + retry() } - }()); + } } -}; -// Processes a response from the current native request -RedirectableRequest.prototype._processResponse = function (response) { - // Store the redirected response - var statusCode = response.statusCode; - if (this._options.trackRedirects) { - this._redirects.push({ - url: this._currentUrl, - headers: response.headers, - statusCode: statusCode, - }); + function go$readdir (args) { + return fs$readdir.apply(fs, args) } - // RFC7231§6.4: The 3xx (Redirection) class of status code indicates - // that further action needs to be taken by the user agent in order to - // fulfill the request. If a Location header field is provided, - // the user agent MAY automatically redirect its request to the URI - // referenced by the Location field value, - // even if the specific status code is not understood. - - // If the response is not a redirect; return it as-is - var location = response.headers.location; - if (!location || this._options.followRedirects === false || - statusCode < 300 || statusCode >= 400) { - response.responseUrl = this._currentUrl; - response.redirects = this._redirects; - this.emit("response", response); - - // Clean up - this._requestBodyBuffers = []; - return; + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream } - // The response is a redirect, so abort the current request - abortRequest(this._currentRequest); - // Discard the remainder of the response to avoid waiting for data - response.destroy(); - - // RFC7231§6.4: A client SHOULD detect and intervene - // in cyclical redirections (i.e., "infinite" redirection loops). - if (++this._redirectCount > this._options.maxRedirects) { - this.emit("error", new TooManyRedirectsError()); - return; + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open } - // RFC7231§6.4: Automatic redirection needs to done with - // care for methods not known to be safe, […] - // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change - // the request method from POST to GET for the subsequent request. - if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || - // RFC7231§6.4.4: The 303 (See Other) status code indicates that - // the server is redirecting the user agent to a different resource […] - // A user agent can perform a retrieval request targeting that URI - // (a GET or HEAD request if using HTTP) […] - (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) { - this._options.method = "GET"; - // Drop a possible entity and headers related to it - this._requestBodyBuffers = []; - removeMatchingHeaders(/^content-/i, this._options.headers); + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open } - // Drop the Host header, as the redirect might lead to a different host - var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) - // If the redirect is relative, carry over the host of the last request - var currentUrlParts = url.parse(this._currentUrl); - var currentHost = currentHostHeader || currentUrlParts.host; - var currentUrl = /^\w+:/.test(location) ? this._currentUrl : - url.format(Object.assign(currentUrlParts, { host: currentHost })); + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) - // Determine the URL of the redirection - var redirectUrl; - try { - redirectUrl = url.resolve(currentUrl, location); - } - catch (cause) { - this.emit("error", new RedirectionError(cause)); - return; + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) } - // Create the redirected request - debug("redirecting to", redirectUrl); - this._isRedirect = true; - var redirectUrlParts = url.parse(redirectUrl); - Object.assign(this._options, redirectUrlParts); + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() - // Drop confidential headers when redirecting to a less secure protocol - // or to a different domain that is not a superdomain - if (redirectUrlParts.protocol !== currentUrlParts.protocol && - redirectUrlParts.protocol !== "https:" || - redirectUrlParts.host !== currentHost && - !isSubdomain(redirectUrlParts.host, currentHost)) { - removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers); + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) } - // Evaluate the beforeRedirect callback - if (typeof this._options.beforeRedirect === "function") { - var responseDetails = { headers: response.headers }; - try { - this._options.beforeRedirect.call(null, this._options, responseDetails); - } - catch (err) { - this.emit("error", err); - return; - } - this._sanitizeOptions(this._options); + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) } - // Perform the redirected request - try { - this._performRequest(); - } - catch (cause) { - this.emit("error", new RedirectionError(cause)); + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) } -}; - -// Wraps the key/value object of protocols with redirect functionality -function wrap(protocols) { - // Default settings - var exports = { - maxRedirects: 21, - maxBodyLength: 10 * 1024 * 1024, - }; - // Wrap each protocol - var nativeProtocols = {}; - Object.keys(protocols).forEach(function (scheme) { - var protocol = scheme + ":"; - var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; - var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } - // Executes a request, following redirects - function request(input, options, callback) { - // Parse parameters - if (typeof input === "string") { - var urlStr = input; - try { - input = urlToOptions(new URL(urlStr)); - } - catch (err) { - /* istanbul ignore next */ - input = url.parse(urlStr); - } - } - else if (URL && (input instanceof URL)) { - input = urlToOptions(input); - } - else { - callback = options; - options = input; - input = { protocol: protocol }; - } - if (typeof options === "function") { - callback = options; - options = null; - } + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } - // Set defaults - options = Object.assign({ - maxRedirects: exports.maxRedirects, - maxBodyLength: exports.maxBodyLength, - }, input, options); - options.nativeProtocols = nativeProtocols; + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null - assert.equal(options.protocol, protocol, "protocol mismatch"); - debug("options", options); - return new RedirectableRequest(options, callback); - } + return go$open(path, flags, mode, cb) - // Executes a GET request, following redirects - function get(input, options, callback) { - var wrappedRequest = wrappedProtocol.request(input, options, callback); - wrappedRequest.end(); - return wrappedRequest; + function go$open (path, flags, mode, cb) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb]]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + retry() + } + }) } - - // Expose the properties on the wrapped protocol - Object.defineProperties(wrappedProtocol, { - request: { value: request, configurable: true, enumerable: true, writable: true }, - get: { value: get, configurable: true, enumerable: true, writable: true }, - }); - }); - return exports; -} - -/* istanbul ignore next */ -function noop() { /* empty */ } - -// from https://github.com/nodejs/node/blob/master/lib/internal/url.js -function urlToOptions(urlObject) { - var options = { - protocol: urlObject.protocol, - hostname: urlObject.hostname.startsWith("[") ? - /* istanbul ignore next */ - urlObject.hostname.slice(1, -1) : - urlObject.hostname, - hash: urlObject.hash, - search: urlObject.search, - pathname: urlObject.pathname, - path: urlObject.pathname + urlObject.search, - href: urlObject.href, - }; - if (urlObject.port !== "") { - options.port = Number(urlObject.port); } - return options; -} -function removeMatchingHeaders(regex, headers) { - var lastValue; - for (var header in headers) { - if (regex.test(header)) { - lastValue = headers[header]; - delete headers[header]; - } - } - return (lastValue === null || typeof lastValue === "undefined") ? - undefined : String(lastValue).trim(); + return fs } -function createErrorType(code, defaultMessage) { - function CustomError(cause) { - Error.captureStackTrace(this, this.constructor); - if (!cause) { - this.message = defaultMessage; - } - else { - this.message = defaultMessage + ": " + cause.message; - this.cause = cause; - } - } - CustomError.prototype = new Error(); - CustomError.prototype.constructor = CustomError; - CustomError.prototype.name = "Error [" + code + "]"; - CustomError.prototype.code = code; - return CustomError; +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) } -function abortRequest(request) { - for (var e = 0; e < events.length; e++) { - request.removeListener(events[e], eventHandlers[events[e]]); +function retry () { + var elem = fs[gracefulQueue].shift() + if (elem) { + debug('RETRY', elem[0].name, elem[1]) + elem[0].apply(null, elem[1]) } - request.on("error", noop); - request.abort(); -} - -function isSubdomain(subdomain, domain) { - const dot = subdomain.length - domain.length - 1; - return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); } -// Exports -module.exports = wrap({ http: http, https: https }); -module.exports.wrap = wrap; - /***/ }), -/***/ "../../node_modules/for-in/index.js": +/***/ "../../node_modules/graceful-fs/legacy-streams.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/*! - * for-in - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - +var Stream = __webpack_require__("stream").Stream +module.exports = legacy -module.exports = function forIn(obj, fn, thisArg) { - for (var key in obj) { - if (fn.call(thisArg, obj[key], key, obj) === false) { - break; - } +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream } -}; - - -/***/ }), - -/***/ "../../node_modules/fragment-cache/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * fragment-cache - * - * Copyright (c) 2016-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var MapCache = __webpack_require__("../../node_modules/map-cache/index.js"); - -/** - * Create a new `FragmentCache` with an optional object to use for `caches`. - * - * ```js - * var fragment = new FragmentCache(); - * ``` - * @name FragmentCache - * @param {String} `cacheName` - * @return {Object} Returns the [map-cache][] instance. - * @api public - */ -function FragmentCache(caches) { - this.caches = caches || {}; -} + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); -/** - * Prototype - */ + Stream.call(this); -FragmentCache.prototype = { + var self = this; - /** - * Get cache `name` from the `fragment.caches` object. Creates a new - * `MapCache` if it doesn't already exist. - * - * ```js - * var cache = fragment.cache('files'); - * console.log(fragment.caches.hasOwnProperty('files')); - * //=> true - * ``` - * @name .cache - * @param {String} `cacheName` - * @return {Object} Returns the [map-cache][] instance. - * @api public - */ + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; - cache: function(cacheName) { - return this.caches[cacheName] || (this.caches[cacheName] = new MapCache()); - }, + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; - /** - * Set a value for property `key` on cache `name` - * - * ```js - * fragment.set('files', 'somefile.js', new File({path: 'somefile.js'})); - * ``` - * @name .set - * @param {String} `name` - * @param {String} `key` Property name to set - * @param {any} `val` The value of `key` - * @return {Object} The cache instance for chaining - * @api public - */ + options = options || {}; - set: function(cacheName, key, val) { - var cache = this.cache(cacheName); - cache.set(key, val); - return cache; - }, + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } - /** - * Returns true if a non-undefined value is set for `key` on fragment cache `name`. - * - * ```js - * var cache = fragment.cache('files'); - * cache.set('somefile.js'); - * - * console.log(cache.has('somefile.js')); - * //=> true - * - * console.log(cache.has('some-other-file.js')); - * //=> false - * ``` - * @name .has - * @param {String} `name` Cache name - * @param {String} `key` Optionally specify a property to check for on cache `name` - * @return {Boolean} - * @api public - */ + if (this.encoding) this.setEncoding(this.encoding); - has: function(cacheName, key) { - return typeof this.get(cacheName, key) !== 'undefined'; - }, + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } - /** - * Get `name`, or if specified, the value of `key`. Invokes the [cache]() method, - * so that cache `name` will be created it doesn't already exist. If `key` is not passed, - * the entire cache (`name`) is returned. - * - * ```js - * var Vinyl = require('vinyl'); - * var cache = fragment.cache('files'); - * cache.set('somefile.js', new Vinyl({path: 'somefile.js'})); - * console.log(cache.get('somefile.js')); - * //=> - * ``` - * @name .get - * @param {String} `name` - * @return {Object} Returns cache `name`, or the value of `key` if specified - * @api public - */ + if (this.start > this.end) { + throw new Error('start must be <= end'); + } - get: function(name, key) { - var cache = this.cache(name); - if (typeof key === 'string') { - return cache.get(key); + this.pos = this.start; } - return cache; - } -}; -/** - * Expose `FragmentCache` - */ + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } -exports = module.exports = FragmentCache; + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } -/***/ }), + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); -/***/ "../../node_modules/fs.realpath/index.js": -/***/ (function(module, exports, __webpack_require__) { + Stream.call(this); -module.exports = realpath -realpath.realpath = realpath -realpath.sync = realpathSync -realpath.realpathSync = realpathSync -realpath.monkeypatch = monkeypatch -realpath.unmonkeypatch = unmonkeypatch + this.path = path; + this.fd = null; + this.writable = true; -var fs = __webpack_require__("fs") -var origRealpath = fs.realpath -var origRealpathSync = fs.realpathSync + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; -var version = process.version -var ok = /^v[0-5]\./.test(version) -var old = __webpack_require__("../../node_modules/fs.realpath/old.js") + options = options || {}; -function newError (er) { - return er && er.syscall === 'realpath' && ( - er.code === 'ELOOP' || - er.code === 'ENOMEM' || - er.code === 'ENAMETOOLONG' - ) -} + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } -function realpath (p, cache, cb) { - if (ok) { - return origRealpath(p, cache, cb) - } + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } - if (typeof cache === 'function') { - cb = cache - cache = null - } - origRealpath(p, cache, function (er, result) { - if (newError(er)) { - old.realpath(p, cache, cb) - } else { - cb(er, result) + this.pos = this.start; } - }) -} -function realpathSync (p, cache) { - if (ok) { - return origRealpathSync(p, cache) - } + this.busy = false; + this._queue = []; - try { - return origRealpathSync(p, cache) - } catch (er) { - if (newError(er)) { - return old.realpathSync(p, cache) - } else { - throw er + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); } } } -function monkeypatch () { - fs.realpath = realpath - fs.realpathSync = realpathSync -} - -function unmonkeypatch () { - fs.realpath = origRealpath - fs.realpathSync = origRealpathSync -} - /***/ }), -/***/ "../../node_modules/fs.realpath/old.js": +/***/ "../../node_modules/graceful-fs/polyfills.js": /***/ (function(module, exports, __webpack_require__) { -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. +var constants = __webpack_require__("constants") -var pathModule = __webpack_require__("path"); -var isWindows = process.platform === 'win32'; -var fs = __webpack_require__("fs"); +var origCwd = process.cwd +var cwd = null -// JavaScript implementation of realpath, ported from node pre-v6 +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform -var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} -function rethrow() { - // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and - // is fairly slow to generate. - var callback; - if (DEBUG) { - var backtrace = new Error; - callback = debugCallback; - } else - callback = missingCallback; +var chdir = process.chdir +process.chdir = function(d) { + cwd = null + chdir.call(process, d) +} - return callback; +module.exports = patch - function debugCallback(err) { - if (err) { - backtrace.message = err.message; - err = backtrace; - missingCallback(err); - } - } +function patch (fs) { + // (re-)implement some things that are known busted or missing. - function missingCallback(err) { - if (err) { - if (process.throwDeprecation) - throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs - else if (!process.noDeprecation) { - var msg = 'fs: missing callback ' + (err.stack || err.message); - if (process.traceDeprecation) - console.trace(msg); - else - console.error(msg); - } - } + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) } -} - -function maybeCallback(cb) { - return typeof cb === 'function' ? cb : rethrow(); -} - -var normalize = pathModule.normalize; -// Regexp that finds the next partion of a (partial) path -// result is [base_with_slash, base], e.g. ['somedir/', 'somedir'] -if (isWindows) { - var nextPartRe = /(.*?)(?:[\/\\]+|$)/g; -} else { - var nextPartRe = /(.*?)(?:[\/]+|$)/g; -} + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } -// Regex to find the device root, including trailing slash. E.g. 'c:\\'. -if (isWindows) { - var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; -} else { - var splitRootRe = /^[\/]*/; -} + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. -exports.realpathSync = function realpathSync(p, cache) { - // make p is absolute - p = pathModule.resolve(p); + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) - if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { - return cache[p]; - } + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) - var original = p, - seenLinks = {}, - knownHard = {}; + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) - // current character position in p - var pos; - // the partial path so far, including a trailing slash if any - var current; - // the partial path without a trailing slash (except when pointing at a root) - var base; - // the partial path scanned in the previous round, with slash - var previous; + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) - start(); + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) - function start() { - // Skip over roots - var m = splitRootRe.exec(p); - pos = m[0].length; - current = m[0]; - base = m[0]; - previous = ''; + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) - // On windows, check that the root exists. On unix there is no need. - if (isWindows && !knownHard[base]) { - fs.lstatSync(base); - knownHard[base] = true; + // if lchmod/lchown do not exist, then make them no-ops + if (!fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) } + fs.lchmodSync = function () {} } - - // walk down the path, swapping out linked pathparts for their real - // values - // NB: p.length changes. - while (pos < p.length) { - // find the next part - nextPartRe.lastIndex = pos; - var result = nextPartRe.exec(p); - previous = current; - current += result[0]; - base = previous + result[1]; - pos = nextPartRe.lastIndex; - - // continue if not a symlink - if (knownHard[base] || (cache && cache[base] === base)) { - continue; + if (!fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) } + fs.lchownSync = function () {} + } - var resolvedLink; - if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { - // some known symbolic link. no need to stat again. - resolvedLink = cache[base]; - } else { - var stat = fs.lstatSync(base); - if (!stat.isSymbolicLink()) { - knownHard[base] = true; - if (cache) cache[base] = base; - continue; - } + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. - // read the link if it wasn't read before - // dev/ino always return 0 on windows, so skip the check. - var linkTarget = null; - if (!isWindows) { - var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); - if (seenLinks.hasOwnProperty(id)) { - linkTarget = seenLinks[id]; + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = (function (fs$rename) { return function (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + }})(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) } } - if (linkTarget === null) { - fs.statSync(base); - linkTarget = fs.readlinkSync(base); - } - resolvedLink = pathModule.resolve(previous, linkTarget); - // track this, if given a cache. - if (cache) cache[base] = resolvedLink; - if (!isWindows) seenLinks[id] = linkTarget; + return fs$read.call(fs, fd, buffer, offset, length, position, callback) } - // resolve the link, then start over - p = pathModule.resolve(resolvedLink, p.slice(pos)); - start(); - } + // This ensures `util.promisify` works as it does for native `fs.read`. + read.__proto__ = fs$read + return read + })(fs.read) - if (cache) cache[original] = p; + fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) - return p; -}; + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) -exports.realpath = function realpath(p, cache, cb) { - if (typeof cb !== 'function') { - cb = maybeCallback(cache); - cache = null; + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } } - // make p is absolute - p = pathModule.resolve(p); - - if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { - return process.nextTick(cb.bind(null, null, cache[p])); - } - - var original = p, - seenLinks = {}, - knownHard = {}; - - // current character position in p - var pos; - // the partial path so far, including a trailing slash if any - var current; - // the partial path without a trailing slash (except when pointing at a root) - var base; - // the partial path scanned in the previous round, with slash - var previous; - - start(); + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK")) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } - function start() { - // Skip over roots - var m = splitRootRe.exec(p); - pos = m[0].length; - current = m[0]; - base = m[0]; - previous = ''; + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } - // On windows, check that the root exists. On unix there is no need. - if (isWindows && !knownHard[base]) { - fs.lstat(base, function(err) { - if (err) return cb(err); - knownHard[base] = true; - LOOP(); - }); } else { - process.nextTick(LOOP); + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} } } - // walk down the path, swapping out linked pathparts for their real - // values - function LOOP() { - // stop if scanned past end of path - if (pos >= p.length) { - if (cache) cache[original] = p; - return cb(null, p); - } - - // find the next part - nextPartRe.lastIndex = pos; - var result = nextPartRe.exec(p); - previous = current; - current += result[0]; - base = previous + result[1]; - pos = nextPartRe.lastIndex; - - // continue if not a symlink - if (knownHard[base] || (cache && cache[base] === base)) { - return process.nextTick(LOOP); + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) } + } - if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { - // known symbolic link. no need to stat again. - return gotResolvedLink(cache[base]); + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } } - - return fs.lstat(base, gotStat); } - function gotStat(err, stat) { - if (err) return cb(err); - // if not a symlink, skip to the next path part - if (!stat.isSymbolicLink()) { - knownHard[base] = true; - if (cache) cache[base] = base; - return process.nextTick(LOOP); + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) } + } - // stat & read the link if not read before - // call gotTarget as soon as the link target is known - // dev/ino always return 0 on windows, so skip the check. - if (!isWindows) { - var id = stat.dev.toString(32) + ':' + stat.ino.toString(32); - if (seenLinks.hasOwnProperty(id)) { - return gotTarget(null, seenLinks[id], base); + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er } } - fs.stat(base, function(err) { - if (err) return cb(err); - - fs.readlink(base, function(err, target) { - if (!isWindows) seenLinks[id] = target; - gotTarget(err, target); - }); - }); - } - - function gotTarget(err, target, base) { - if (err) return cb(err); - - var resolvedLink = pathModule.resolve(previous, target); - if (cache) cache[base] = resolvedLink; - gotResolvedLink(resolvedLink); } - function gotResolvedLink(resolvedLink) { - // resolve the link, then start over - p = pathModule.resolve(resolvedLink, p.slice(pos)); - start(); + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } } -}; - - -/***/ }), - -/***/ "../../node_modules/function-bind/implementation.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var slice = Array.prototype.slice; -var toStr = Object.prototype.toString; -var funcType = '[object Function]'; -module.exports = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr.call(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + return stats; } - var args = slice.call(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - } - }; + } - var boundLength = Math.max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs.push('$' + i); - } + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true - bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder); + if (er.code === "ENOSYS") + return true - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true } - return bound; -}; + return false + } +} /***/ }), -/***/ "../../node_modules/function-bind/index.js": +/***/ "../../node_modules/has-flag/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -var implementation = __webpack_require__("../../node_modules/function-bind/implementation.js"); - -module.exports = Function.prototype.bind || implementation; +module.exports = (flag, argv = process.argv) => { + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf('--'); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); +}; /***/ }), -/***/ "../../node_modules/get-stream/buffer-stream.js": +/***/ "../../node_modules/has/src/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {PassThrough: PassThroughStream} = __webpack_require__("stream"); - -module.exports = options => { - options = {...options}; - - const {array} = options; - let {encoding} = options; - const isBuffer = encoding === 'buffer'; - let objectMode = false; - - if (array) { - objectMode = !(encoding || isBuffer); - } else { - encoding = encoding || 'utf8'; - } - - if (isBuffer) { - encoding = null; - } - - const stream = new PassThroughStream({objectMode}); - - if (encoding) { - stream.setEncoding(encoding); - } - - let length = 0; - const chunks = []; - - stream.on('data', chunk => { - chunks.push(chunk); - - if (objectMode) { - length = chunks.length; - } else { - length += chunk.length; - } - }); - - stream.getBufferedValue = () => { - if (array) { - return chunks; - } - return isBuffer ? Buffer.concat(chunks, length) : chunks.join(''); - }; - - stream.getBufferedLength = () => length; +var bind = __webpack_require__("../../node_modules/function-bind/index.js"); - return stream; -}; +module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); /***/ }), -/***/ "../../node_modules/get-stream/index.js": +/***/ "../../node_modules/hosted-git-info/git-host-info.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const pump = __webpack_require__("../../node_modules/pump/index.js"); -const bufferStream = __webpack_require__("../../node_modules/get-stream/buffer-stream.js"); -class MaxBufferError extends Error { - constructor() { - super('maxBuffer exceeded'); - this.name = 'MaxBufferError'; - } +var gitHosts = module.exports = { + github: { + // First two are insecure and generally shouldn't be used any more, but + // they are still supported. + 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ], + 'domain': 'github.com', + 'treepath': 'tree', + 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}', + 'bugstemplate': 'https://{domain}/{user}/{project}/issues', + 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}', + 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}' + }, + bitbucket: { + 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], + 'domain': 'bitbucket.org', + 'treepath': 'src', + 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz' + }, + gitlab: { + 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], + 'domain': 'gitlab.com', + 'treepath': 'tree', + 'bugstemplate': 'https://{domain}/{user}/{project}/issues', + 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}', + 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}', + 'pathmatch': /^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/ + }, + gist: { + 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ], + 'domain': 'gist.github.com', + 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/, + 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}', + 'bugstemplate': 'https://{domain}/{project}', + 'gittemplate': 'git://{domain}/{project}.git{#committish}', + 'sshtemplate': 'git@{domain}:/{project}.git{#committish}', + 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}', + 'browsetemplate': 'https://{domain}/{project}{/committish}', + 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}', + 'docstemplate': 'https://{domain}/{project}{/committish}', + 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}', + 'shortcuttemplate': '{type}:{project}{#committish}', + 'pathtemplate': '{project}{#committish}', + 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}', + 'hashformat': function (fragment) { + return 'file-' + formatHashFragment(fragment) + } + } } -async function getStream(inputStream, options) { - if (!inputStream) { - return Promise.reject(new Error('Expected a stream')); - } - - options = { - maxBuffer: Infinity, - ...options - }; - - const {maxBuffer} = options; - - let stream; - await new Promise((resolve, reject) => { - const rejectPromise = error => { - if (error) { // A null check - error.bufferedData = stream.getBufferedValue(); - } - - reject(error); - }; - - stream = pump(inputStream, bufferStream(options), error => { - if (error) { - rejectPromise(error); - return; - } - - resolve(); - }); +var gitHostDefaults = { + 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}', + 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}', + 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}', + 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}', + 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme', + 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}', + 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}', + 'shortcuttemplate': '{type}:{user}/{project}{#committish}', + 'pathtemplate': '{user}/{project}{#committish}', + 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/, + 'hashformat': formatHashFragment +} - stream.on('data', () => { - if (stream.getBufferedLength() > maxBuffer) { - rejectPromise(new MaxBufferError()); - } - }); - }); +Object.keys(gitHosts).forEach(function (name) { + Object.keys(gitHostDefaults).forEach(function (key) { + if (gitHosts[name][key]) return + gitHosts[name][key] = gitHostDefaults[key] + }) + gitHosts[name].protocols_re = RegExp('^(' + + gitHosts[name].protocols.map(function (protocol) { + return protocol.replace(/([\\+*{}()[\]$^|])/g, '\\$1') + }).join('|') + '):$') +}) - return stream.getBufferedValue(); +function formatHashFragment (fragment) { + return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-') } -module.exports = getStream; -// TODO: Remove this for the next major release -module.exports.default = getStream; -module.exports.buffer = (stream, options) => getStream(stream, {...options, encoding: 'buffer'}); -module.exports.array = (stream, options) => getStream(stream, {...options, array: true}); -module.exports.MaxBufferError = MaxBufferError; - /***/ }), -/***/ "../../node_modules/get-value/index.js": -/***/ (function(module, exports) { - -/*! - * get-value - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - -module.exports = function(obj, prop, a, b, c) { - if (!isObject(obj) || !prop) { - return obj; - } - - prop = toString(prop); +/***/ "../../node_modules/hosted-git-info/git-host.js": +/***/ (function(module, exports, __webpack_require__) { - // allowing for multiple properties to be passed as - // a string or array, but much faster (3-4x) than doing - // `[].slice.call(arguments)` - if (a) prop += '.' + toString(a); - if (b) prop += '.' + toString(b); - if (c) prop += '.' + toString(c); +"use strict"; - if (prop in obj) { - return obj[prop]; - } +var gitHosts = __webpack_require__("../../node_modules/hosted-git-info/git-host-info.js") +/* eslint-disable node/no-deprecated-api */ - var segs = prop.split('.'); - var len = segs.length; - var i = -1; +// copy-pasta util._extend from node's source, to avoid pulling +// the whole util module into peoples' webpack bundles. +/* istanbul ignore next */ +var extend = Object.assign || function _extend (target, source) { + // Don't do anything if source isn't an object + if (source === null || typeof source !== 'object') return target - while (obj && (++i < len)) { - var key = segs[i]; - while (key[key.length - 1] === '\\') { - key = key.slice(0, -1) + '.' + segs[++i]; - } - obj = obj[key]; + var keys = Object.keys(source) + var i = keys.length + while (i--) { + target[keys[i]] = source[keys[i]] } - return obj; -}; - -function isObject(val) { - return val !== null && (typeof val === 'object' || typeof val === 'function'); + return target } -function toString(val) { - if (!val) return ''; - if (Array.isArray(val)) { - return val.join('.'); - } - return val; +module.exports = GitHost +function GitHost (type, user, auth, project, committish, defaultRepresentation, opts) { + var gitHostInfo = this + gitHostInfo.type = type + Object.keys(gitHosts[type]).forEach(function (key) { + gitHostInfo[key] = gitHosts[type][key] + }) + gitHostInfo.user = user + gitHostInfo.auth = auth + gitHostInfo.project = project + gitHostInfo.committish = committish + gitHostInfo.default = defaultRepresentation + gitHostInfo.opts = opts || {} } +GitHost.prototype.hash = function () { + return this.committish ? '#' + this.committish : '' +} -/***/ }), - -/***/ "../../node_modules/getopts/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; +GitHost.prototype._fill = function (template, opts) { + if (!template) return + var vars = extend({}, opts) + vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : '' + opts = extend(extend({}, this.opts), opts) + var self = this + Object.keys(this).forEach(function (key) { + if (self[key] != null && vars[key] == null) vars[key] = self[key] + }) + var rawAuth = vars.auth + var rawcommittish = vars.committish + var rawFragment = vars.fragment + var rawPath = vars.path + var rawProject = vars.project + Object.keys(vars).forEach(function (key) { + var value = vars[key] + if ((key === 'path' || key === 'project') && typeof value === 'string') { + vars[key] = value.split('/').map(function (pathComponent) { + return encodeURIComponent(pathComponent) + }).join('/') + } else { + vars[key] = encodeURIComponent(value) + } + }) + vars['auth@'] = rawAuth ? rawAuth + '@' : '' + vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : '' + vars.fragment = vars.fragment ? vars.fragment : '' + vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : '' + vars['/path'] = vars.path ? '/' + vars.path : '' + vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/') + if (opts.noCommittish) { + vars['#committish'] = '' + vars['/tree/committish'] = '' + vars['/committish'] = '' + vars.committish = '' + } else { + vars['#committish'] = rawcommittish ? '#' + rawcommittish : '' + vars['/tree/committish'] = vars.committish + ? '/' + vars.treepath + '/' + vars.committish + : '' + vars['/committish'] = vars.committish ? '/' + vars.committish : '' + vars.committish = vars.committish || 'master' + } + var res = template + Object.keys(vars).forEach(function (key) { + res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key]) + }) + if (opts.noGitPlus) { + return res.replace(/^git[+]/, '') + } else { + return res + } +} +GitHost.prototype.ssh = function (opts) { + return this._fill(this.sshtemplate, opts) +} -const EMPTYARR = [] -const SHORTSPLIT = /$|[!-@[-`{-~][\s\S]*/g -const isArray = Array.isArray +GitHost.prototype.sshurl = function (opts) { + return this._fill(this.sshurltemplate, opts) +} -const parseValue = function(any) { - if (any === "") return "" - if (any === "false") return false - const maybe = Number(any) - return maybe * 0 === 0 ? maybe : any +GitHost.prototype.browse = function (P, F, opts) { + if (typeof P === 'string') { + if (typeof F !== 'string') { + opts = F + F = null + } + return this._fill(this.browsefiletemplate, extend({ + fragment: F, + path: P + }, opts)) + } else { + return this._fill(this.browsetemplate, P) + } } -const parseAlias = function(aliases) { - let out = {}, - key, - alias, - prev, - len, - any, - i, - k +GitHost.prototype.docs = function (opts) { + return this._fill(this.docstemplate, opts) +} - for (key in aliases) { - any = aliases[key] - alias = out[key] = isArray(any) ? any : [any] +GitHost.prototype.bugs = function (opts) { + return this._fill(this.bugstemplate, opts) +} - for (i = 0, len = alias.length; i < len; i++) { - prev = out[alias[i]] = [key] +GitHost.prototype.https = function (opts) { + return this._fill(this.httpstemplate, opts) +} - for (k = 0; k < len; k++) { - if (i !== k) prev.push(alias[k]) - } - } - } +GitHost.prototype.git = function (opts) { + return this._fill(this.gittemplate, opts) +} - return out +GitHost.prototype.shortcut = function (opts) { + return this._fill(this.shortcuttemplate, opts) } -const parseDefault = function(aliases, defaults) { - let out = {}, - key, - alias, - value, - len, - i +GitHost.prototype.path = function (opts) { + return this._fill(this.pathtemplate, opts) +} - for (key in defaults) { - value = defaults[key] - alias = aliases[key] +GitHost.prototype.tarball = function (opts_) { + var opts = extend({}, opts_, { noCommittish: false }) + return this._fill(this.tarballtemplate, opts) +} - out[key] = value +GitHost.prototype.file = function (P, opts) { + return this._fill(this.filetemplate, extend({ path: P }, opts)) +} - if (alias === undefined) { - aliases[key] = EMPTYARR - } else { - for (i = 0, len = alias.length; i < len; i++) { - out[alias[i]] = value - } - } - } +GitHost.prototype.getDefaultRepresentation = function () { + return this.default +} - return out +GitHost.prototype.toString = function (opts) { + if (this.default && typeof this[this.default] === 'function') return this[this.default](opts) + return this.sshurl(opts) } -const parseOptions = function(aliases, options, value) { - let out = {}, - key, - alias, - len, - end, - i, - k - if (options !== undefined) { - for (i = 0, len = options.length; i < len; i++) { - key = options[i] - alias = aliases[key] +/***/ }), - out[key] = value +/***/ "../../node_modules/hosted-git-info/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (alias === undefined) { - aliases[key] = EMPTYARR - } else { - for (k = 0, end = alias.length; k < end; k++) { - out[alias[k]] = value - } - } - } - } +"use strict"; - return out +var url = __webpack_require__("url") +var gitHosts = __webpack_require__("../../node_modules/hosted-git-info/git-host-info.js") +var GitHost = module.exports = __webpack_require__("../../node_modules/hosted-git-info/git-host.js") + +var protocolToRepresentationMap = { + 'git+ssh:': 'sshurl', + 'git+https:': 'https', + 'ssh:': 'sshurl', + 'git:': 'git' } -const write = function(out, key, value, aliases, unknown) { - let i, - prev, - alias = aliases[key], - len = alias === undefined ? -1 : alias.length +function protocolToRepresentation (protocol) { + return protocolToRepresentationMap[protocol] || protocol.slice(0, -1) +} - if (len >= 0 || unknown === undefined || unknown(key)) { - prev = out[key] +var authProtocols = { + 'git:': true, + 'https:': true, + 'git+https:': true, + 'http:': true, + 'git+http:': true +} - if (prev === undefined) { - out[key] = value - } else { - if (isArray(prev)) { - prev.push(value) - } else { - out[key] = [prev, value] - } - } +var cache = {} - for (i = 0; i < len; i++) { - out[alias[i]] = out[key] - } - } -} +module.exports.fromUrl = function (giturl, opts) { + if (typeof giturl !== 'string') return + var key = giturl + JSON.stringify(opts || {}) -const getopts = function(argv, opts) { - let unknown = (opts = opts || {}).unknown, - aliases = parseAlias(opts.alias), - strings = parseOptions(aliases, opts.string, ""), - values = parseDefault(aliases, opts.default), - bools = parseOptions(aliases, opts.boolean, false), - stopEarly = opts.stopEarly, - _ = [], - out = { _ }, - i = 0, - k = 0, - len = argv.length, - key, - arg, - end, - match, - value + if (!(key in cache)) { + cache[key] = fromUrl(giturl, opts) + } - for (; i < len; i++) { - arg = argv[i] + return cache[key] +} - if (arg[0] !== "-" || arg === "-") { - if (stopEarly) while (i < len) _.push(argv[i++]) - else _.push(arg) - } else if (arg === "--") { - while (++i < len) _.push(argv[i]) - } else if (arg[1] === "-") { - end = arg.indexOf("=", 2) - if (arg[2] === "n" && arg[3] === "o" && arg[4] === "-") { - key = arg.slice(5, end >= 0 ? end : undefined) - value = false - } else if (end >= 0) { - key = arg.slice(2, end) - value = - bools[key] !== undefined || - (strings[key] === undefined - ? parseValue(arg.slice(end + 1)) - : arg.slice(end + 1)) - } else { - key = arg.slice(2) - value = - bools[key] !== undefined || - (len === i + 1 || argv[i + 1][0] === "-" - ? strings[key] === undefined - ? true - : "" - : strings[key] === undefined - ? parseValue(argv[++i]) - : argv[++i]) +function fromUrl (giturl, opts) { + if (giturl == null || giturl === '') return + var url = fixupUnqualifiedGist( + isGitHubShorthand(giturl) ? 'github:' + giturl : giturl + ) + var parsed = parseGitUrl(url) + var shortcutMatch = url.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\/)?([^#]+)/) + var matches = Object.keys(gitHosts).map(function (gitHostName) { + try { + var gitHostInfo = gitHosts[gitHostName] + var auth = null + if (parsed.auth && authProtocols[parsed.protocol]) { + auth = parsed.auth } - write(out, key, value, aliases, unknown) - } else { - SHORTSPLIT.lastIndex = 2 - match = SHORTSPLIT.exec(arg) - end = match.index - value = match[0] - - for (k = 1; k < end; k++) { - write( - out, - (key = arg[k]), - k + 1 < end - ? strings[key] === undefined || - arg.substring(k + 1, (k = end)) + value - : value === "" - ? len === i + 1 || argv[i + 1][0] === "-" - ? strings[key] === undefined || "" - : bools[key] !== undefined || - (strings[key] === undefined ? parseValue(argv[++i]) : argv[++i]) - : bools[key] !== undefined || - (strings[key] === undefined ? parseValue(value) : value), - aliases, - unknown - ) + var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null + var user = null + var project = null + var defaultRepresentation = null + if (shortcutMatch && shortcutMatch[1] === gitHostName) { + user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2]) + project = decodeURIComponent(shortcutMatch[3].replace(/\.git$/, '')) + defaultRepresentation = 'shortcut' + } else { + if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return + if (!gitHostInfo.protocols_re.test(parsed.protocol)) return + if (!parsed.path) return + var pathmatch = gitHostInfo.pathmatch + var matched = parsed.path.match(pathmatch) + if (!matched) return + /* istanbul ignore else */ + if (matched[1] !== null && matched[1] !== undefined) { + user = decodeURIComponent(matched[1].replace(/^:/, '')) + } + project = decodeURIComponent(matched[2]) + defaultRepresentation = protocolToRepresentation(parsed.protocol) } + return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts) + } catch (ex) { + /* istanbul ignore else */ + if (ex instanceof URIError) { + } else throw ex } - } - - for (key in values) if (out[key] === undefined) out[key] = values[key] - for (key in bools) if (out[key] === undefined) out[key] = false - for (key in strings) if (out[key] === undefined) out[key] = "" - - return out + }).filter(function (gitHostInfo) { return gitHostInfo }) + if (matches.length !== 1) return + return matches[0] } -module.exports = getopts - +function isGitHubShorthand (arg) { + // Note: This does not fully test the git ref format. + // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html + // + // The only way to do this properly would be to shell out to + // git-check-ref-format, and as this is a fast sync function, + // we don't want to do that. Just let git fail if it turns + // out that the commit-ish is invalid. + // GH usernames cannot start with . or - + return /^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(arg) +} -/***/ }), +function fixupUnqualifiedGist (giturl) { + // necessary for round-tripping gists + var parsed = url.parse(giturl) + if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) { + return parsed.protocol + '/' + parsed.host + } else { + return giturl + } +} -/***/ "../../node_modules/git-hooks-list/index.json": -/***/ (function(module) { +function parseGitUrl (giturl) { + var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/) + if (!matched) { + var legacy = url.parse(giturl) + // If we don't have url.URL, then sorry, this is just not fixable. + // This affects Node <= 6.12. + if (legacy.auth && typeof url.URL === 'function') { + // git urls can be in the form of scp-style/ssh-connect strings, like + // git+ssh://user@host.com:some/path, which the legacy url parser + // supports, but WhatWG url.URL class does not. However, the legacy + // parser de-urlencodes the username and password, so something like + // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes + // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong. + // Pull off just the auth and host, so we dont' get the confusing + // scp-style URL, then pass that to the WhatWG parser to get the + // auth properly escaped. + var authmatch = giturl.match(/[^@]+@[^:/]+/) + /* istanbul ignore else - this should be impossible */ + if (authmatch) { + var whatwg = new url.URL(authmatch[0]) + legacy.auth = whatwg.username || '' + if (whatwg.password) legacy.auth += ':' + whatwg.password + } + } + return legacy + } + return { + protocol: 'git+ssh:', + slashes: true, + auth: matched[1], + host: matched[2], + port: null, + hostname: matched[2], + hash: matched[4], + search: null, + query: null, + pathname: '/' + matched[3], + path: '/' + matched[3], + href: 'git+ssh://' + matched[1] + '@' + matched[2] + + '/' + matched[3] + (matched[4] || '') + } +} -module.exports = JSON.parse("[\"applypatch-msg\",\"pre-applypatch\",\"post-applypatch\",\"pre-commit\",\"pre-merge-commit\",\"prepare-commit-msg\",\"commit-msg\",\"post-commit\",\"pre-rebase\",\"post-checkout\",\"post-merge\",\"pre-push\",\"pre-receive\",\"update\",\"post-receive\",\"post-update\",\"push-to-checkout\",\"pre-auto-gc\",\"post-rewrite\",\"sendemail-validate\",\"fsmonitor-watchman\",\"p4-pre-submit\",\"post-index-change\"]"); /***/ }), -/***/ "../../node_modules/glob-parent/index.js": +/***/ "../../node_modules/human-signals/build/src/core.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +Object.defineProperty(exports,"__esModule",{value:true});exports.SIGNALS=void 0; +const SIGNALS=[ +{ +name:"SIGHUP", +number:1, +action:"terminate", +description:"Terminal closed", +standard:"posix"}, -var isGlob = __webpack_require__("../../node_modules/is-glob/index.js"); -var pathPosixDirname = __webpack_require__("path").posix.dirname; -var isWin32 = __webpack_require__("os").platform() === 'win32'; - -var slash = '/'; -var backslash = /\\/g; -var enclosure = /[\{\[].*[\}\]]$/; -var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; -var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; - -/** - * @param {string} str - * @param {Object} opts - * @param {boolean} [opts.flipBackslashes=true] - * @returns {string} - */ -module.exports = function globParent(str, opts) { - var options = Object.assign({ flipBackslashes: true }, opts); +{ +name:"SIGINT", +number:2, +action:"terminate", +description:"User interruption with CTRL-C", +standard:"ansi"}, - // flip windows path separators - if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { - str = str.replace(backslash, slash); - } +{ +name:"SIGQUIT", +number:3, +action:"core", +description:"User interruption with CTRL-\\", +standard:"posix"}, - // special case for strings ending in enclosure containing path separator - if (enclosure.test(str)) { - str += slash; - } +{ +name:"SIGILL", +number:4, +action:"core", +description:"Invalid machine instruction", +standard:"ansi"}, - // preserves full path in case of trailing path separator - str += 'a'; +{ +name:"SIGTRAP", +number:5, +action:"core", +description:"Debugger breakpoint", +standard:"posix"}, - // remove path parts that are globby - do { - str = pathPosixDirname(str); - } while (isGlob(str) || globby.test(str)); +{ +name:"SIGABRT", +number:6, +action:"core", +description:"Aborted", +standard:"ansi"}, - // remove escape chars and return result - return str.replace(escaped, '$1'); -}; +{ +name:"SIGIOT", +number:6, +action:"core", +description:"Aborted", +standard:"bsd"}, +{ +name:"SIGBUS", +number:7, +action:"core", +description: +"Bus error due to misaligned, non-existing address or paging error", +standard:"bsd"}, -/***/ }), +{ +name:"SIGEMT", +number:7, +action:"terminate", +description:"Command should be emulated but is not implemented", +standard:"other"}, -/***/ "../../node_modules/glob/common.js": -/***/ (function(module, exports, __webpack_require__) { +{ +name:"SIGFPE", +number:8, +action:"core", +description:"Floating point arithmetic error", +standard:"ansi"}, -exports.setopts = setopts -exports.ownProp = ownProp -exports.makeAbs = makeAbs -exports.finish = finish -exports.mark = mark -exports.isIgnored = isIgnored -exports.childrenIgnored = childrenIgnored +{ +name:"SIGKILL", +number:9, +action:"terminate", +description:"Forced termination", +standard:"posix", +forced:true}, -function ownProp (obj, field) { - return Object.prototype.hasOwnProperty.call(obj, field) -} +{ +name:"SIGUSR1", +number:10, +action:"terminate", +description:"Application-specific signal", +standard:"posix"}, -var fs = __webpack_require__("fs") -var path = __webpack_require__("path") -var minimatch = __webpack_require__("../../node_modules/minimatch/minimatch.js") -var isAbsolute = __webpack_require__("../../node_modules/path-is-absolute/index.js") -var Minimatch = minimatch.Minimatch +{ +name:"SIGSEGV", +number:11, +action:"core", +description:"Segmentation fault", +standard:"ansi"}, -function alphasort (a, b) { - return a.localeCompare(b, 'en') -} +{ +name:"SIGUSR2", +number:12, +action:"terminate", +description:"Application-specific signal", +standard:"posix"}, -function setupIgnores (self, options) { - self.ignore = options.ignore || [] +{ +name:"SIGPIPE", +number:13, +action:"terminate", +description:"Broken pipe or socket", +standard:"posix"}, - if (!Array.isArray(self.ignore)) - self.ignore = [self.ignore] +{ +name:"SIGALRM", +number:14, +action:"terminate", +description:"Timeout or timer", +standard:"posix"}, - if (self.ignore.length) { - self.ignore = self.ignore.map(ignoreMap) - } -} +{ +name:"SIGTERM", +number:15, +action:"terminate", +description:"Termination", +standard:"ansi"}, -// ignore patterns are always in dot:true mode. -function ignoreMap (pattern) { - var gmatcher = null - if (pattern.slice(-3) === '/**') { - var gpattern = pattern.replace(/(\/\*\*)+$/, '') - gmatcher = new Minimatch(gpattern, { dot: true }) - } +{ +name:"SIGSTKFLT", +number:16, +action:"terminate", +description:"Stack is empty or overflowed", +standard:"other"}, - return { - matcher: new Minimatch(pattern, { dot: true }), - gmatcher: gmatcher - } -} +{ +name:"SIGCHLD", +number:17, +action:"ignore", +description:"Child process terminated, paused or unpaused", +standard:"posix"}, -function setopts (self, pattern, options) { - if (!options) - options = {} +{ +name:"SIGCLD", +number:17, +action:"ignore", +description:"Child process terminated, paused or unpaused", +standard:"other"}, - // base-matching: just use globstar for that. - if (options.matchBase && -1 === pattern.indexOf("/")) { - if (options.noglobstar) { - throw new Error("base matching requires globstar") - } - pattern = "**/" + pattern - } +{ +name:"SIGCONT", +number:18, +action:"unpause", +description:"Unpaused", +standard:"posix", +forced:true}, - self.silent = !!options.silent - self.pattern = pattern - self.strict = options.strict !== false - self.realpath = !!options.realpath - self.realpathCache = options.realpathCache || Object.create(null) - self.follow = !!options.follow - self.dot = !!options.dot - self.mark = !!options.mark - self.nodir = !!options.nodir - if (self.nodir) - self.mark = true - self.sync = !!options.sync - self.nounique = !!options.nounique - self.nonull = !!options.nonull - self.nosort = !!options.nosort - self.nocase = !!options.nocase - self.stat = !!options.stat - self.noprocess = !!options.noprocess - self.absolute = !!options.absolute - self.fs = options.fs || fs +{ +name:"SIGSTOP", +number:19, +action:"pause", +description:"Paused", +standard:"posix", +forced:true}, - self.maxLength = options.maxLength || Infinity - self.cache = options.cache || Object.create(null) - self.statCache = options.statCache || Object.create(null) - self.symlinks = options.symlinks || Object.create(null) +{ +name:"SIGTSTP", +number:20, +action:"pause", +description:"Paused using CTRL-Z or \"suspend\"", +standard:"posix"}, - setupIgnores(self, options) +{ +name:"SIGTTIN", +number:21, +action:"pause", +description:"Background process cannot read terminal input", +standard:"posix"}, - self.changedCwd = false - var cwd = process.cwd() - if (!ownProp(options, "cwd")) - self.cwd = cwd - else { - self.cwd = path.resolve(options.cwd) - self.changedCwd = self.cwd !== cwd - } +{ +name:"SIGBREAK", +number:21, +action:"terminate", +description:"User interruption with CTRL-BREAK", +standard:"other"}, - self.root = options.root || path.resolve(self.cwd, "/") - self.root = path.resolve(self.root) - if (process.platform === "win32") - self.root = self.root.replace(/\\/g, "/") +{ +name:"SIGTTOU", +number:22, +action:"pause", +description:"Background process cannot write to terminal output", +standard:"posix"}, - // TODO: is an absolute `cwd` supposed to be resolved against `root`? - // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test') - self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd) - if (process.platform === "win32") - self.cwdAbs = self.cwdAbs.replace(/\\/g, "/") - self.nomount = !!options.nomount +{ +name:"SIGURG", +number:23, +action:"ignore", +description:"Socket received out-of-band data", +standard:"bsd"}, - // disable comments and negation in Minimatch. - // Note that they are not supported in Glob itself anyway. - options.nonegate = true - options.nocomment = true +{ +name:"SIGXCPU", +number:24, +action:"core", +description:"Process timed out", +standard:"bsd"}, - self.minimatch = new Minimatch(pattern, options) - self.options = self.minimatch.options -} +{ +name:"SIGXFSZ", +number:25, +action:"core", +description:"File too big", +standard:"bsd"}, -function finish (self) { - var nou = self.nounique - var all = nou ? [] : Object.create(null) +{ +name:"SIGVTALRM", +number:26, +action:"terminate", +description:"Timeout or timer", +standard:"bsd"}, - for (var i = 0, l = self.matches.length; i < l; i ++) { - var matches = self.matches[i] - if (!matches || Object.keys(matches).length === 0) { - if (self.nonull) { - // do like the shell, and spit out the literal glob - var literal = self.minimatch.globSet[i] - if (nou) - all.push(literal) - else - all[literal] = true - } - } else { - // had matches - var m = Object.keys(matches) - if (nou) - all.push.apply(all, m) - else - m.forEach(function (m) { - all[m] = true - }) - } - } +{ +name:"SIGPROF", +number:27, +action:"terminate", +description:"Timeout or timer", +standard:"bsd"}, - if (!nou) - all = Object.keys(all) +{ +name:"SIGWINCH", +number:28, +action:"ignore", +description:"Terminal window size changed", +standard:"bsd"}, - if (!self.nosort) - all = all.sort(alphasort) +{ +name:"SIGIO", +number:29, +action:"terminate", +description:"I/O is available", +standard:"other"}, - // at *some* point we statted all of these - if (self.mark) { - for (var i = 0; i < all.length; i++) { - all[i] = self._mark(all[i]) - } - if (self.nodir) { - all = all.filter(function (e) { - var notDir = !(/\/$/.test(e)) - var c = self.cache[e] || self.cache[makeAbs(self, e)] - if (notDir && c) - notDir = c !== 'DIR' && !Array.isArray(c) - return notDir - }) - } - } +{ +name:"SIGPOLL", +number:29, +action:"terminate", +description:"Watched event", +standard:"other"}, - if (self.ignore.length) - all = all.filter(function(m) { - return !isIgnored(self, m) - }) +{ +name:"SIGINFO", +number:29, +action:"ignore", +description:"Request for process information", +standard:"other"}, - self.found = all -} +{ +name:"SIGPWR", +number:30, +action:"terminate", +description:"Device running out of power", +standard:"systemv"}, -function mark (self, p) { - var abs = makeAbs(self, p) - var c = self.cache[abs] - var m = p - if (c) { - var isDir = c === 'DIR' || Array.isArray(c) - var slash = p.slice(-1) === '/' +{ +name:"SIGSYS", +number:31, +action:"core", +description:"Invalid system call", +standard:"other"}, - if (isDir && !slash) - m += '/' - else if (!isDir && slash) - m = m.slice(0, -1) +{ +name:"SIGUNUSED", +number:31, +action:"terminate", +description:"Invalid system call", +standard:"other"}];exports.SIGNALS=SIGNALS; +//# sourceMappingURL=core.js.map - if (m !== p) { - var mabs = makeAbs(self, m) - self.statCache[mabs] = self.statCache[abs] - self.cache[mabs] = self.cache[abs] - } - } +/***/ }), - return m -} +/***/ "../../node_modules/human-signals/build/src/main.js": +/***/ (function(module, exports, __webpack_require__) { -// lotta situps... -function makeAbs (self, f) { - var abs = f - if (f.charAt(0) === '/') { - abs = path.join(self.root, f) - } else if (isAbsolute(f) || f === '') { - abs = f - } else if (self.changedCwd) { - abs = path.resolve(self.cwd, f) - } else { - abs = path.resolve(f) - } +"use strict"; +Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__("os"); - if (process.platform === 'win32') - abs = abs.replace(/\\/g, '/') +var _signals=__webpack_require__("../../node_modules/human-signals/build/src/signals.js"); +var _realtime=__webpack_require__("../../node_modules/human-signals/build/src/realtime.js"); - return abs -} -// Return true, if pattern ends with globstar '**', for the accompanying parent directory. -// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents -function isIgnored (self, path) { - if (!self.ignore.length) - return false +const getSignalsByName=function(){ +const signals=(0,_signals.getSignals)(); +return signals.reduce(getSignalByName,{}); +}; - return self.ignore.some(function(item) { - return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) - }) -} +const getSignalByName=function( +signalByNameMemo, +{name,number,description,supported,action,forced,standard}) +{ +return{ +...signalByNameMemo, +[name]:{name,number,description,supported,action,forced,standard}}; -function childrenIgnored (self, path) { - if (!self.ignore.length) - return false +}; - return self.ignore.some(function(item) { - return !!(item.gmatcher && item.gmatcher.match(path)) - }) -} +const signalsByName=getSignalsByName();exports.signalsByName=signalsByName; -/***/ }), -/***/ "../../node_modules/glob/glob.js": -/***/ (function(module, exports, __webpack_require__) { -// Approach: -// -// 1. Get the minimatch set -// 2. For each pattern in the set, PROCESS(pattern, false) -// 3. Store matches per-set, then uniq them -// -// PROCESS(pattern, inGlobStar) -// Get the first [n] items from pattern that are all strings -// Join these together. This is PREFIX. -// If there is no more remaining, then stat(PREFIX) and -// add to matches if it succeeds. END. -// -// If inGlobStar and PREFIX is symlink and points to dir -// set ENTRIES = [] -// else readdir(PREFIX) as ENTRIES -// If fail, END -// -// with ENTRIES -// If pattern[n] is GLOBSTAR -// // handle the case where the globstar match is empty -// // by pruning it out, and testing the resulting pattern -// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) -// // handle other cases. -// for ENTRY in ENTRIES (not dotfiles) -// // attach globstar + tail onto the entry -// // Mark that this entry is a globstar match -// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) -// -// else // not globstar -// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) -// Test ENTRY against pattern[n] -// If fails, continue -// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) -// -// Caveat: -// Cache all stats and readdirs results to minimize syscall. Since all -// we ever care about is existence and directory-ness, we can just keep -// `true` for files, and [children,...] for directories, or `false` for -// things that don't exist. +const getSignalsByNumber=function(){ +const signals=(0,_signals.getSignals)(); +const length=_realtime.SIGRTMAX+1; +const signalsA=Array.from({length},(value,number)=> +getSignalByNumber(number,signals)); -module.exports = glob +return Object.assign({},...signalsA); +}; -var rp = __webpack_require__("../../node_modules/fs.realpath/index.js") -var minimatch = __webpack_require__("../../node_modules/minimatch/minimatch.js") -var Minimatch = minimatch.Minimatch -var inherits = __webpack_require__("../../node_modules/inherits/inherits.js") -var EE = __webpack_require__("events").EventEmitter -var path = __webpack_require__("path") -var assert = __webpack_require__("assert") -var isAbsolute = __webpack_require__("../../node_modules/path-is-absolute/index.js") -var globSync = __webpack_require__("../../node_modules/glob/sync.js") -var common = __webpack_require__("../../node_modules/glob/common.js") -var setopts = common.setopts -var ownProp = common.ownProp -var inflight = __webpack_require__("../../node_modules/inflight/inflight.js") -var util = __webpack_require__("util") -var childrenIgnored = common.childrenIgnored -var isIgnored = common.isIgnored +const getSignalByNumber=function(number,signals){ +const signal=findSignalByNumber(number,signals); -var once = __webpack_require__("../../node_modules/once/once.js") +if(signal===undefined){ +return{}; +} -function glob (pattern, options, cb) { - if (typeof options === 'function') cb = options, options = {} - if (!options) options = {} +const{name,description,supported,action,forced,standard}=signal; +return{ +[number]:{ +name, +number, +description, +supported, +action, +forced, +standard}}; - if (options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return globSync(pattern, options) - } - return new Glob(pattern, options, cb) -} +}; -glob.sync = globSync -var GlobSync = glob.GlobSync = globSync.GlobSync -// old api surface -glob.glob = glob -function extend (origin, add) { - if (add === null || typeof add !== 'object') { - return origin - } +const findSignalByNumber=function(number,signals){ +const signal=signals.find(({name})=>_os.constants.signals[name]===number); - var keys = Object.keys(add) - var i = keys.length - while (i--) { - origin[keys[i]] = add[keys[i]] - } - return origin +if(signal!==undefined){ +return signal; } -glob.hasMagic = function (pattern, options_) { - var options = extend({}, options_) - options.noprocess = true - - var g = new Glob(pattern, options) - var set = g.minimatch.set - - if (!pattern) - return false +return signals.find(signalA=>signalA.number===number); +}; - if (set.length > 1) - return true +const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber; +//# sourceMappingURL=main.js.map - for (var j = 0; j < set[0].length; j++) { - if (typeof set[0][j] !== 'string') - return true - } +/***/ }), - return false -} +/***/ "../../node_modules/human-signals/build/src/realtime.js": +/***/ (function(module, exports, __webpack_require__) { -glob.Glob = Glob -inherits(Glob, EE) -function Glob (pattern, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } +"use strict"; +Object.defineProperty(exports,"__esModule",{value:true});exports.SIGRTMAX=exports.getRealtimeSignals=void 0; +const getRealtimeSignals=function(){ +const length=SIGRTMAX-SIGRTMIN+1; +return Array.from({length},getRealtimeSignal); +};exports.getRealtimeSignals=getRealtimeSignals; - if (options && options.sync) { - if (cb) - throw new TypeError('callback provided to sync glob') - return new GlobSync(pattern, options) - } +const getRealtimeSignal=function(value,index){ +return{ +name:`SIGRT${index+1}`, +number:SIGRTMIN+index, +action:"terminate", +description:"Application-specific signal (realtime)", +standard:"posix"}; - if (!(this instanceof Glob)) - return new Glob(pattern, options, cb) +}; - setopts(this, pattern, options) - this._didRealPath = false +const SIGRTMIN=34; +const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX; +//# sourceMappingURL=realtime.js.map - // process each pattern in the minimatch set - var n = this.minimatch.set.length +/***/ }), - // The matches are stored as {: true,...} so that - // duplicates are automagically pruned. - // Later, we do an Object.keys() on these. - // Keep them as a list so we can fill in when nonull is set. - this.matches = new Array(n) +/***/ "../../node_modules/human-signals/build/src/signals.js": +/***/ (function(module, exports, __webpack_require__) { - if (typeof cb === 'function') { - cb = once(cb) - this.on('error', cb) - this.on('end', function (matches) { - cb(null, matches) - }) - } +"use strict"; +Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__("os"); - var self = this - this._processing = 0 +var _core=__webpack_require__("../../node_modules/human-signals/build/src/core.js"); +var _realtime=__webpack_require__("../../node_modules/human-signals/build/src/realtime.js"); - this._emitQueue = [] - this._processQueue = [] - this.paused = false - if (this.noprocess) - return this - if (n === 0) - return done() +const getSignals=function(){ +const realtimeSignals=(0,_realtime.getRealtimeSignals)(); +const signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal); +return signals; +};exports.getSignals=getSignals; - var sync = true - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false, done) - } - sync = false - function done () { - --self._processing - if (self._processing <= 0) { - if (sync) { - process.nextTick(function () { - self._finish() - }) - } else { - self._finish() - } - } - } -} -Glob.prototype._finish = function () { - assert(this instanceof Glob) - if (this.aborted) - return - if (this.realpath && !this._didRealpath) - return this._realpath() - common.finish(this) - this.emit('end', this.found) -} -Glob.prototype._realpath = function () { - if (this._didRealpath) - return - this._didRealpath = true +const normalizeSignal=function({ +name, +number:defaultNumber, +description, +action, +forced=false, +standard}) +{ +const{ +signals:{[name]:constantSignal}}= +_os.constants; +const supported=constantSignal!==undefined; +const number=supported?constantSignal:defaultNumber; +return{name,number,description,supported,action,forced,standard}; +}; +//# sourceMappingURL=signals.js.map - var n = this.matches.length - if (n === 0) - return this._finish() +/***/ }), - var self = this - for (var i = 0; i < this.matches.length; i++) - this._realpathSet(i, next) +/***/ "../../node_modules/ignore/index.js": +/***/ (function(module, exports) { - function next () { - if (--n === 0) - self._finish() - } +// A simple implementation of make-array +function makeArray (subject) { + return Array.isArray(subject) + ? subject + : [subject] } -Glob.prototype._realpathSet = function (index, cb) { - var matchset = this.matches[index] - if (!matchset) - return cb() +const EMPTY = '' +const SPACE = ' ' +const ESCAPE = '\\' +const REGEX_TEST_BLANK_LINE = /^\s+$/ +const REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/ +const REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/ +const REGEX_SPLITALL_CRLF = /\r?\n/g +// /foo, +// ./foo, +// ../foo, +// . +// .. +const REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/ - var found = Object.keys(matchset) - var self = this - var n = found.length +const SLASH = '/' +const KEY_IGNORE = typeof Symbol !== 'undefined' + ? Symbol.for('node-ignore') + /* istanbul ignore next */ + : 'node-ignore' - if (n === 0) - return cb() +const define = (object, key, value) => + Object.defineProperty(object, key, {value}) - var set = this.matches[index] = Object.create(null) - found.forEach(function (p, i) { - // If there's a problem with the stat, then it means that - // one or more of the links in the realpath couldn't be - // resolved. just return the abs value in that case. - p = self._makeAbs(p) - rp.realpath(p, self.realpathCache, function (er, real) { - if (!er) - set[real] = true - else if (er.syscall === 'stat') - set[p] = true - else - self.emit('error', er) // srsly wtf right here +const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g - if (--n === 0) { - self.matches[index] = set - cb() - } - }) - }) -} +// Sanitize the range of a regular expression +// The cases are complicated, see test cases for details +const sanitizeRange = range => range.replace( + REGEX_REGEXP_RANGE, + (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) + ? match + // Invalid range (out of order) which is ok for gitignore rules but + // fatal for JavaScript regular expression, so eliminate it. + : EMPTY +) -Glob.prototype._mark = function (p) { - return common.mark(this, p) +// See fixtures #59 +const cleanRangeBackSlash = slashes => { + const {length} = slashes + return slashes.slice(0, length - length % 2) } -Glob.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} +// > If the pattern ends with a slash, +// > it is removed for the purpose of the following description, +// > but it would only find a match with a directory. +// > In other words, foo/ will match a directory foo and paths underneath it, +// > but will not match a regular file or a symbolic link foo +// > (this is consistent with the way how pathspec works in general in Git). +// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`' +// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call +// you could use option `mark: true` with `glob` -Glob.prototype.abort = function () { - this.aborted = true - this.emit('abort') -} +// '`foo/`' should not continue with the '`..`' +const REPLACERS = [ -Glob.prototype.pause = function () { - if (!this.paused) { - this.paused = true - this.emit('pause') - } -} + // > Trailing spaces are ignored unless they are quoted with backslash ("\") + [ + // (a\ ) -> (a ) + // (a ) -> (a) + // (a \ ) -> (a ) + /\\?\s+$/, + match => match.indexOf('\\') === 0 + ? SPACE + : EMPTY + ], -Glob.prototype.resume = function () { - if (this.paused) { - this.emit('resume') - this.paused = false - if (this._emitQueue.length) { - var eq = this._emitQueue.slice(0) - this._emitQueue.length = 0 - for (var i = 0; i < eq.length; i ++) { - var e = eq[i] - this._emitMatch(e[0], e[1]) - } - } - if (this._processQueue.length) { - var pq = this._processQueue.slice(0) - this._processQueue.length = 0 - for (var i = 0; i < pq.length; i ++) { - var p = pq[i] - this._processing-- - this._process(p[0], p[1], p[2], p[3]) - } - } - } -} + // replace (\ ) with ' ' + [ + /\\\s/g, + () => SPACE + ], -Glob.prototype._process = function (pattern, index, inGlobStar, cb) { - assert(this instanceof Glob) - assert(typeof cb === 'function') + // Escape metacharacters + // which is written down by users but means special for regular expressions. - if (this.aborted) - return + // > There are 12 characters with special meanings: + // > - the backslash \, + // > - the caret ^, + // > - the dollar sign $, + // > - the period or dot ., + // > - the vertical bar or pipe symbol |, + // > - the question mark ?, + // > - the asterisk or star *, + // > - the plus sign +, + // > - the opening parenthesis (, + // > - the closing parenthesis ), + // > - and the opening square bracket [, + // > - the opening curly brace {, + // > These special characters are often called "metacharacters". + [ + /[\\$.|*+(){^]/g, + match => `\\${match}` + ], - this._processing++ - if (this.paused) { - this._processQueue.push([pattern, index, inGlobStar, cb]) - return - } + [ + // > a question mark (?) matches a single character + /(?!\\)\?/g, + () => '[^/]' + ], - //console.error('PROCESS %d', this._processing, pattern) + // leading slash + [ - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. + // > A leading slash matches the beginning of the pathname. + // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". + // A leading slash matches the beginning of the pathname + /^\//, + () => '^' + ], - // see if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index, cb) - return + // replace special metacharacter slash after the leading slash + [ + /\//g, + () => '\\/' + ], - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break + [ + // > A leading "**" followed by a slash means match in all directories. + // > For example, "**/foo" matches file or directory "foo" anywhere, + // > the same as pattern "foo". + // > "**/foo/bar" matches file or directory "bar" anywhere that is directly + // > under directory "foo". + // Notice that the '*'s have been replaced as '\\*' + /^\^*\\\*\\\*\\\//, - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } + // '**/foo' <-> 'foo' + () => '^(?:.*\\/)?' + ], - var remain = pattern.slice(n) + // starting + [ + // there will be no leading '/' + // (which has been replaced by section "leading slash") + // If starts with '**', adding a '^' to the regular expression also works + /^(?=[^^])/, + function startingReplacer () { + // If has a slash `/` at the beginning or middle + return !/\/(?!$)/.test(this) + // > Prior to 2.22.1 + // > If the pattern does not contain a slash /, + // > Git treats it as a shell glob pattern + // Actually, if there is only a trailing slash, + // git also treats it as a shell glob pattern - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix + // After 2.22.1 (compatible but clearer) + // > If there is a separator at the beginning or middle (or both) + // > of the pattern, then the pattern is relative to the directory + // > level of the particular .gitignore file itself. + // > Otherwise the pattern may also match at any level below + // > the .gitignore level. + ? '(?:^|\\/)' - var abs = this._makeAbs(read) + // > Otherwise, Git treats the pattern as a shell glob suitable for + // > consumption by fnmatch(3) + : '^' + } + ], - //if ignored, skip _processing - if (childrenIgnored(this, read)) - return cb() + // two globstars + [ + // Use lookahead assertions so that we could match more than one `'/**'` + /\\\/\\\*\\\*(?=\\\/|$)/g, - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) -} + // Zero, one or several directories + // should not use '*', or it will be replaced by the next replacer -Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} + // Check if it is not the last `'/**'` + (_, index, str) => index + 6 < str.length -Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + // case: /**/ + // > A slash followed by two consecutive asterisks then a slash matches + // > zero or more directories. + // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on. + // '/**/' + ? '(?:\\/[^\\/]+)*' - // if the abs isn't a dir, then nothing can match! - if (!entries) - return cb() + // case: /** + // > A trailing `"/**"` matches everything inside. - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' + // #21: everything inside but it should not include the current folder + : '\\/.+' + ], - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } + // intermediate wildcards + [ + // Never replace escaped '*' + // ignore rule '\*' will match the path '*' - //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + // 'abc.*/' -> go + // 'abc.*' -> skip this rule + /(^|[^\\]+)\\\*(?=.+)/g, - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return cb() + // '*.js' matches '.js' + // '*.js' doesn't match 'abc' + (_, p1) => `${p1}[^\\/]*` + ], - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. + [ + // unescape, revert step 3 except for back slash + // For example, if a user escape a '\\*', + // after step 3, the result will be '\\\\\\*' + /\\\\\\(?=[$.|*+(){^])/g, + () => ESCAPE + ], - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) + [ + // '\\\\' -> '\\' + /\\\\/g, + () => ESCAPE + ], - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } + [ + // > The range notation, e.g. [a-zA-Z], + // > can be used to match one of the characters in a range. - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this._emitMatch(index, e) - } - // This was the last one, and no stats were needed - return cb() - } + // `\` is escaped by step 3 + /(\\)?\[([^\]/]*?)(\\*)($|\])/g, + (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE + // '\\[bar]' -> '\\\\[bar\\]' + ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` + : close === ']' + ? endEscape.length % 2 === 0 + // A normal case, and it is a range notation + // '[bar]' + // '[bar\\\\]' + ? `[${sanitizeRange(range)}${endEscape}]` + // Invalid range notaton + // '[bar\\]' -> '[bar\\\\]' + : '[]' + : '[]' + ], - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) { - if (prefix !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - this._process([e].concat(remain), index, inGlobStar, cb) - } - cb() -} + // ending + [ + // 'js' will not match 'js.' + // 'ab' will not match 'abc' + /(?:[^*])$/, -Glob.prototype._emitMatch = function (index, e) { - if (this.aborted) - return + // WTF! + // https://git-scm.com/docs/gitignore + // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1) + // which re-fixes #24, #38 - if (isIgnored(this, e)) - return + // > If there is a separator at the end of the pattern then the pattern + // > will only match directories, otherwise the pattern can match both + // > files and directories. - if (this.paused) { - this._emitQueue.push([index, e]) - return - } + // 'js*' will not match 'a.js' + // 'js/' will not match 'a.js' + // 'js' will match 'a.js' and 'a.js/' + match => /\/$/.test(match) + // foo/ will not match 'foo' + ? `${match}$` + // foo matches 'foo' and 'foo/' + : `${match}(?=$|\\/$)` + ], - var abs = isAbsolute(e) ? e : this._makeAbs(e) + // trailing wildcard + [ + /(\^|\\\/)?\\\*$/, + (_, p1) => { + const prefix = p1 + // '\^': + // '/*' does not match EMPTY + // '/*' does not match everything - if (this.mark) - e = this._mark(e) + // '\\\/': + // 'abc/*' does not match 'abc/' + ? `${p1}[^/]+` - if (this.absolute) - e = abs + // 'a*' matches 'a' + // 'a*' matches 'aa' + : '[^/]*' - if (this.matches[index][e]) - return + return `${prefix}(?=$|\\/$)` + } + ], +] - if (this.nodir) { - var c = this.cache[abs] - if (c === 'DIR' || Array.isArray(c)) - return +// A simple cache, because an ignore rule only has only one certain meaning +const regexCache = Object.create(null) + +// @param {pattern} +const makeRegex = (pattern, negative, ignorecase) => { + const r = regexCache[pattern] + if (r) { + return r } - this.matches[index][e] = true + // const replacers = negative + // ? NEGATIVE_REPLACERS + // : POSITIVE_REPLACERS - var st = this.statCache[abs] - if (st) - this.emit('stat', e, st) + const source = REPLACERS.reduce( + (prev, current) => prev.replace(current[0], current[1].bind(pattern)), + pattern + ) - this.emit('match', e) + return regexCache[pattern] = ignorecase + ? new RegExp(source, 'i') + : new RegExp(source) } -Glob.prototype._readdirInGlobStar = function (abs, cb) { - if (this.aborted) - return - - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false, cb) - - var lstatkey = 'lstat\0' + abs - var self = this - var lstatcb = inflight(lstatkey, lstatcb_) +const isString = subject => typeof subject === 'string' - if (lstatcb) - self.fs.lstat(abs, lstatcb) +// > A blank line matches no files, so it can serve as a separator for readability. +const checkPattern = pattern => pattern + && isString(pattern) + && !REGEX_TEST_BLANK_LINE.test(pattern) - function lstatcb_ (er, lstat) { - if (er && er.code === 'ENOENT') - return cb() + // > A line starting with # serves as a comment. + && pattern.indexOf('#') !== 0 - var isSym = lstat && lstat.isSymbolicLink() - self.symlinks[abs] = isSym +const splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF) - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && lstat && !lstat.isDirectory()) { - self.cache[abs] = 'FILE' - cb() - } else - self._readdir(abs, false, cb) +class IgnoreRule { + constructor ( + origin, + pattern, + negative, + regex + ) { + this.origin = origin + this.pattern = pattern + this.negative = negative + this.regex = regex } } -Glob.prototype._readdir = function (abs, inGlobStar, cb) { - if (this.aborted) - return +const createRule = (pattern, ignorecase) => { + const origin = pattern + let negative = false - cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) - if (!cb) - return + // > An optional prefix "!" which negates the pattern; + if (pattern.indexOf('!') === 0) { + negative = true + pattern = pattern.substr(1) + } - //console.error('RD %j %j', +inGlobStar, abs) - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs, cb) + pattern = pattern + // > Put a backslash ("\") in front of the first "!" for patterns that + // > begin with a literal "!", for example, `"\!important!.txt"`. + .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!') + // > Put a backslash ("\") in front of the first hash for patterns that + // > begin with a hash. + .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#') - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return cb() + const regex = makeRegex(pattern, negative, ignorecase) - if (Array.isArray(c)) - return cb(null, c) - } + return new IgnoreRule( + origin, + pattern, + negative, + regex + ) +} - var self = this - self.fs.readdir(abs, readdirCb(this, abs, cb)) +const throwError = (message, Ctor) => { + throw new Ctor(message) } -function readdirCb (self, abs, cb) { - return function (er, entries) { - if (er) - self._readdirError(abs, er, cb) - else - self._readdirEntries(abs, entries, cb) +const checkPath = (path, originalPath, doThrow) => { + if (!isString(path)) { + return doThrow( + `path must be a string, but got \`${originalPath}\``, + TypeError + ) } -} -Glob.prototype._readdirEntries = function (abs, entries, cb) { - if (this.aborted) - return + // We don't know if we should ignore EMPTY, so throw + if (!path) { + return doThrow(`path must not be empty`, TypeError) + } - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } + // Check if it is a relative path + if (checkPath.isNotRelative(path)) { + const r = '`path.relative()`d' + return doThrow( + `path should be a ${r} string, but got "${originalPath}"`, + RangeError + ) } - this.cache[abs] = entries - return cb(null, entries) + return true } -Glob.prototype._readdirError = function (f, er, cb) { - if (this.aborted) - return +const isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path) - // handle errors, and cache the information - switch (er.code) { - case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 - case 'ENOTDIR': // totally normal. means it *does* exist. - var abs = this._makeAbs(f) - this.cache[abs] = 'FILE' - if (abs === this.cwdAbs) { - var error = new Error(er.code + ' invalid cwd ' + this.cwd) - error.path = this.cwd - error.code = er.code - this.emit('error', error) - this.abort() - } - break +checkPath.isNotRelative = isNotRelative +checkPath.convert = p => p - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break +class Ignore { + constructor ({ + ignorecase = true + } = {}) { + this._rules = [] + this._ignorecase = ignorecase + define(this, KEY_IGNORE, true) + this._initCache() + } - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) { - this.emit('error', er) - // If the error is handled, then we abort - // if not, we threw out of here - this.abort() - } - if (!this.silent) - console.error('glob error', er) - break + _initCache () { + this._ignoreCache = Object.create(null) + this._testCache = Object.create(null) } - return cb() -} + _addPattern (pattern) { + // #32 + if (pattern && pattern[KEY_IGNORE]) { + this._rules = this._rules.concat(pattern._rules) + this._added = true + return + } -Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { - var self = this - this._readdir(abs, inGlobStar, function (er, entries) { - self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) - }) -} + if (checkPattern(pattern)) { + const rule = createRule(pattern, this._ignorecase) + this._added = true + this._rules.push(rule) + } + } + // @param {Array | string | Ignore} pattern + add (pattern) { + this._added = false -Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { - //console.error('pgs2', prefix, remain[0], entries) + makeArray( + isString(pattern) + ? splitPattern(pattern) + : pattern + ).forEach(this._addPattern, this) - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return cb() + // Some rules have just added to the ignore, + // making the behavior changed. + if (this._added) { + this._initCache() + } - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) + return this + } - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false, cb) + // legacy + addPattern (pattern) { + return this.add(pattern) + } - var isSym = this.symlinks[abs] - var len = entries.length + // | ignored : unignored + // negative | 0:0 | 0:1 | 1:0 | 1:1 + // -------- | ------- | ------- | ------- | -------- + // 0 | TEST | TEST | SKIP | X + // 1 | TESTIF | SKIP | TEST | X - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return cb() + // - SKIP: always skip + // - TEST: always test + // - TESTIF: only test if checkUnignored + // - X: that never happen - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue + // @param {boolean} whether should check if the path is unignored, + // setting `checkUnignored` to `false` could reduce additional + // path matching. - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true, cb) + // @returns {TestResult} true if a file is ignored + _testOne (path, checkUnignored) { + let ignored = false + let unignored = false - var below = gspref.concat(entries[i], remain) - this._process(below, index, true, cb) - } + this._rules.forEach(rule => { + const {negative} = rule + if ( + unignored === negative && ignored !== unignored + || negative && !ignored && !unignored && !checkUnignored + ) { + return + } - cb() -} + const matched = rule.regex.test(path) -Glob.prototype._processSimple = function (prefix, index, cb) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var self = this - this._stat(prefix, function (er, exists) { - self._processSimple2(prefix, index, er, exists, cb) - }) -} -Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + if (matched) { + ignored = !negative + unignored = negative + } + }) - //console.error('ps2', prefix, exists) + return { + ignored, + unignored + } + } - if (!this.matches[index]) - this.matches[index] = Object.create(null) + // @returns {TestResult} + _test (originalPath, cache, checkUnignored, slices) { + const path = originalPath + // Supports nullable path + && checkPath.convert(originalPath) - // If it doesn't exist, then just mark the lack of results - if (!exists) - return cb() + checkPath(path, originalPath, throwError) - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } + return this._t(path, cache, checkUnignored, slices) } - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') + _t (path, cache, checkUnignored, slices) { + if (path in cache) { + return cache[path] + } - // Mark this as a match - this._emitMatch(index, prefix) - cb() -} + if (!slices) { + // path/to/a.js + // ['path', 'to', 'a.js'] + slices = path.split(SLASH) + } -// Returns either 'DIR', 'FILE', or false -Glob.prototype._stat = function (f, cb) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' + slices.pop() - if (f.length > this.maxLength) - return cb() + // If the path has no parent directory, just test it + if (!slices.length) { + return cache[path] = this._testOne(path, checkUnignored) + } - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] + const parent = this._t( + slices.join(SLASH) + SLASH, + cache, + checkUnignored, + slices + ) - if (Array.isArray(c)) - c = 'DIR' + // If the path contains a parent directory, check the parent first + return cache[path] = parent.ignored + // > It is not possible to re-include a file if a parent directory of + // > that file is excluded. + ? parent + : this._testOne(path, checkUnignored) + } - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return cb(null, c) + ignores (path) { + return this._test(path, this._ignoreCache, false).ignored + } - if (needDir && c === 'FILE') - return cb() + createFilter () { + return path => !this.ignores(path) + } - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. + filter (paths) { + return makeArray(paths).filter(this.createFilter()) } - var exists - var stat = this.statCache[abs] - if (stat !== undefined) { - if (stat === false) - return cb(null, stat) - else { - var type = stat.isDirectory() ? 'DIR' : 'FILE' - if (needDir && type === 'FILE') - return cb() - else - return cb(null, type, stat) - } + // @returns {TestResult} + test (path) { + return this._test(path, this._testCache, true) } +} - var self = this - var statcb = inflight('stat\0' + abs, lstatcb_) - if (statcb) - self.fs.lstat(abs, statcb) +const factory = options => new Ignore(options) - function lstatcb_ (er, lstat) { - if (lstat && lstat.isSymbolicLink()) { - // If it's a symlink, then treat it as the target, unless - // the target does not exist, then treat it as a file. - return self.fs.stat(abs, function (er, stat) { - if (er) - self._stat2(f, abs, null, lstat, cb) - else - self._stat2(f, abs, er, stat, cb) - }) - } else { - self._stat2(f, abs, er, lstat, cb) - } - } -} +const returnFalse = () => false -Glob.prototype._stat2 = function (f, abs, er, stat, cb) { - if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { - this.statCache[abs] = false - return cb() - } +const isPathValid = path => + checkPath(path && checkPath.convert(path), path, returnFalse) - var needDir = f.slice(-1) === '/' - this.statCache[abs] = stat +factory.isPathValid = isPathValid - if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) - return cb(null, false, stat) +// Fixes typescript +factory.default = factory - var c = true - if (stat) - c = stat.isDirectory() ? 'DIR' : 'FILE' - this.cache[abs] = this.cache[abs] || c +module.exports = factory - if (needDir && c === 'FILE') - return cb() +// Windows +// -------------------------------------------------------------- +/* istanbul ignore if */ +if ( + // Detect `process` so that it can run in browsers. + typeof process !== 'undefined' + && ( + process.env && process.env.IGNORE_TEST_WIN32 + || process.platform === 'win32' + ) +) { + /* eslint no-control-regex: "off" */ + const makePosix = str => /^\\\\\?\\/.test(str) + || /["<>|\u0000-\u001F]+/u.test(str) + ? str + : str.replace(/\\/g, '/') - return cb(null, c, stat) + checkPath.convert = makePosix + + // 'C:\\foo' <- 'C:\\foo' has been converted to 'C:/' + // 'd:\\foo' + const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i + checkPath.isNotRelative = path => + REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path) + || isNotRelative(path) } /***/ }), -/***/ "../../node_modules/glob/sync.js": +/***/ "../../node_modules/imurmurhash/imurmurhash.js": /***/ (function(module, exports, __webpack_require__) { -module.exports = globSync -globSync.GlobSync = GlobSync +/** + * @preserve + * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013) + * + * @author
Jens Taylor + * @see http://github.com/homebrewing/brauhaus-diff + * @author Gary Court + * @see http://github.com/garycourt/murmurhash-js + * @author Austin Appleby + * @see http://sites.google.com/site/murmurhash/ + */ +(function(){ + var cache; -var rp = __webpack_require__("../../node_modules/fs.realpath/index.js") -var minimatch = __webpack_require__("../../node_modules/minimatch/minimatch.js") -var Minimatch = minimatch.Minimatch -var Glob = __webpack_require__("../../node_modules/glob/glob.js").Glob -var util = __webpack_require__("util") -var path = __webpack_require__("path") -var assert = __webpack_require__("assert") -var isAbsolute = __webpack_require__("../../node_modules/path-is-absolute/index.js") -var common = __webpack_require__("../../node_modules/glob/common.js") -var setopts = common.setopts -var ownProp = common.ownProp -var childrenIgnored = common.childrenIgnored -var isIgnored = common.isIgnored + // Call this function without `new` to use the cached object (good for + // single-threaded environments), or with `new` to create a new object. + // + // @param {string} key A UTF-16 or ASCII string + // @param {number} seed An optional positive integer + // @return {object} A MurmurHash3 object for incremental hashing + function MurmurHash3(key, seed) { + var m = this instanceof MurmurHash3 ? this : cache; + m.reset(seed) + if (typeof key === 'string' && key.length > 0) { + m.hash(key); + } -function globSync (pattern, options) { - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') + if (m !== this) { + return m; + } + }; - return new GlobSync(pattern, options).found -} + // Incrementally add a string to this hash + // + // @param {string} key A UTF-16 or ASCII string + // @return {object} this + MurmurHash3.prototype.hash = function(key) { + var h1, k1, i, top, len; -function GlobSync (pattern, options) { - if (!pattern) - throw new Error('must provide pattern') + len = key.length; + this.len += len; - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') + k1 = this.k1; + i = 0; + switch (this.rem) { + case 0: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) : 0; + case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 8 : 0; + case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 16 : 0; + case 3: + k1 ^= len > i ? (key.charCodeAt(i) & 0xff) << 24 : 0; + k1 ^= len > i ? (key.charCodeAt(i++) & 0xff00) >> 8 : 0; + } - if (!(this instanceof GlobSync)) - return new GlobSync(pattern, options) + this.rem = (len + this.rem) & 3; // & 3 is same as % 4 + len -= this.rem; + if (len > 0) { + h1 = this.h1; + while (1) { + k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff; + k1 = (k1 << 15) | (k1 >>> 17); + k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff; - setopts(this, pattern, options) + h1 ^= k1; + h1 = (h1 << 13) | (h1 >>> 19); + h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff; - if (this.noprocess) - return this + if (i >= len) { + break; + } - var n = this.minimatch.set.length - this.matches = new Array(n) - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false) - } - this._finish() -} + k1 = ((key.charCodeAt(i++) & 0xffff)) ^ + ((key.charCodeAt(i++) & 0xffff) << 8) ^ + ((key.charCodeAt(i++) & 0xffff) << 16); + top = key.charCodeAt(i++); + k1 ^= ((top & 0xff) << 24) ^ + ((top & 0xff00) >> 8); + } -GlobSync.prototype._finish = function () { - assert(this instanceof GlobSync) - if (this.realpath) { - var self = this - this.matches.forEach(function (matchset, index) { - var set = self.matches[index] = Object.create(null) - for (var p in matchset) { - try { - p = self._makeAbs(p) - var real = rp.realpathSync(p, self.realpathCache) - set[real] = true - } catch (er) { - if (er.syscall === 'stat') - set[self._makeAbs(p)] = true - else - throw er + k1 = 0; + switch (this.rem) { + case 3: k1 ^= (key.charCodeAt(i + 2) & 0xffff) << 16; + case 2: k1 ^= (key.charCodeAt(i + 1) & 0xffff) << 8; + case 1: k1 ^= (key.charCodeAt(i) & 0xffff); + } + + this.h1 = h1; } - } - }) - } - common.finish(this) -} + this.k1 = k1; + return this; + }; -GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert(this instanceof GlobSync) + // Get the result of this hash + // + // @return {number} The 32-bit hash + MurmurHash3.prototype.result = function() { + var k1, h1; + + k1 = this.k1; + h1 = this.h1; - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. + if (k1 > 0) { + k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff; + k1 = (k1 << 15) | (k1 >>> 17); + k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff; + h1 ^= k1; + } - // See if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index) - return + h1 ^= this.len; - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break + h1 ^= h1 >>> 16; + h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff; + h1 ^= h1 >>> 13; + h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff; + h1 ^= h1 >>> 16; - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } + return h1 >>> 0; + }; - var remain = pattern.slice(n) + // Reset the hash object for reuse + // + // @param {number} seed An optional positive integer + MurmurHash3.prototype.reset = function(seed) { + this.h1 = typeof seed === 'number' ? seed : 0; + this.rem = this.k1 = this.len = 0; + return this; + }; - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix + // A cached object to use. This can be safely used if you're in a single- + // threaded environment, otherwise you need to create new hashes to use. + cache = new MurmurHash3(); - var abs = this._makeAbs(read) + if (true) { + module.exports = MurmurHash3; + } else {} +}()); - //if ignored, skip processing - if (childrenIgnored(this, read)) - return - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar) -} +/***/ }), +/***/ "../../node_modules/inflight/inflight.js": +/***/ (function(module, exports, __webpack_require__) { -GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar) +var wrappy = __webpack_require__("../../node_modules/wrappy/wrappy.js") +var reqs = Object.create(null) +var once = __webpack_require__("../../node_modules/once/once.js") - // if the abs isn't a dir, then nothing can match! - if (!entries) - return +module.exports = wrappy(inflight) - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) } else { - m = e.match(pn) + delete reqs[key] } - if (m) - matchedEntries.push(e) } - } + }) +} - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return +function slice (args) { + var length = args.length + var array = [] - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix.slice(-1) !== '/') - e = prefix + '/' + e - else - e = prefix + e - } +/***/ }), - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this._emitMatch(index, e) - } - // This was the last one, and no stats were needed - return - } +/***/ "../../node_modules/inherits/inherits.js": +/***/ (function(module, exports, __webpack_require__) { - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) - newPattern = [prefix, e] - else - newPattern = [e] - this._process(newPattern.concat(remain), index, inGlobStar) - } +try { + var util = __webpack_require__("util"); + /* istanbul ignore next */ + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + /* istanbul ignore next */ + module.exports = __webpack_require__("../../node_modules/inherits/inherits_browser.js"); } -GlobSync.prototype._emitMatch = function (index, e) { - if (isIgnored(this, e)) - return - - var abs = this._makeAbs(e) +/***/ }), - if (this.mark) - e = this._mark(e) +/***/ "../../node_modules/inherits/inherits_browser.js": +/***/ (function(module, exports) { - if (this.absolute) { - e = abs +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } } +} - if (this.matches[index][e]) - return - if (this.nodir) { - var c = this.cache[abs] - if (c === 'DIR' || Array.isArray(c)) - return - } +/***/ }), - this.matches[index][e] = true +/***/ "../../node_modules/is-arrayish/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (this.stat) - this._stat(e) -} +"use strict"; -GlobSync.prototype._readdirInGlobStar = function (abs) { - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false) +module.exports = function isArrayish(obj) { + if (!obj) { + return false; + } - var entries - var lstat - var stat - try { - lstat = this.fs.lstatSync(abs) - } catch (er) { - if (er.code === 'ENOENT') { - // lstat failed, doesn't exist - return null - } - } + return obj instanceof Array || Array.isArray(obj) || + (obj.length >= 0 && obj.splice instanceof Function); +}; - var isSym = lstat && lstat.isSymbolicLink() - this.symlinks[abs] = isSym - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && lstat && !lstat.isDirectory()) - this.cache[abs] = 'FILE' - else - entries = this._readdir(abs, false) +/***/ }), - return entries -} +/***/ "../../node_modules/is-core-module/core.json": +/***/ (function(module) { -GlobSync.prototype._readdir = function (abs, inGlobStar) { - var entries +module.exports = JSON.parse("{\"assert\":true,\"node:assert\":[\">= 14.18 && < 15\",\">= 16\"],\"assert/strict\":\">= 15\",\"node:assert/strict\":\">= 16\",\"async_hooks\":\">= 8\",\"node:async_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"buffer_ieee754\":\">= 0.5 && < 0.9.7\",\"buffer\":true,\"node:buffer\":[\">= 14.18 && < 15\",\">= 16\"],\"child_process\":true,\"node:child_process\":[\">= 14.18 && < 15\",\">= 16\"],\"cluster\":\">= 0.5\",\"node:cluster\":[\">= 14.18 && < 15\",\">= 16\"],\"console\":true,\"node:console\":[\">= 14.18 && < 15\",\">= 16\"],\"constants\":true,\"node:constants\":[\">= 14.18 && < 15\",\">= 16\"],\"crypto\":true,\"node:crypto\":[\">= 14.18 && < 15\",\">= 16\"],\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"node:dgram\":[\">= 14.18 && < 15\",\">= 16\"],\"diagnostics_channel\":[\">= 14.17 && < 15\",\">= 15.1\"],\"node:diagnostics_channel\":[\">= 14.18 && < 15\",\">= 16\"],\"dns\":true,\"node:dns\":[\">= 14.18 && < 15\",\">= 16\"],\"dns/promises\":\">= 15\",\"node:dns/promises\":\">= 16\",\"domain\":\">= 0.7.12\",\"node:domain\":[\">= 14.18 && < 15\",\">= 16\"],\"events\":true,\"node:events\":[\">= 14.18 && < 15\",\">= 16\"],\"freelist\":\"< 6\",\"fs\":true,\"node:fs\":[\">= 14.18 && < 15\",\">= 16\"],\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"node:fs/promises\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_agent\":\">= 0.11.1\",\"node:_http_agent\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_client\":\">= 0.11.1\",\"node:_http_client\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_common\":\">= 0.11.1\",\"node:_http_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_incoming\":\">= 0.11.1\",\"node:_http_incoming\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_outgoing\":\">= 0.11.1\",\"node:_http_outgoing\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_server\":\">= 0.11.1\",\"node:_http_server\":[\">= 14.18 && < 15\",\">= 16\"],\"http\":true,\"node:http\":[\">= 14.18 && < 15\",\">= 16\"],\"http2\":\">= 8.8\",\"node:http2\":[\">= 14.18 && < 15\",\">= 16\"],\"https\":true,\"node:https\":[\">= 14.18 && < 15\",\">= 16\"],\"inspector\":\">= 8\",\"node:inspector\":[\">= 14.18 && < 15\",\">= 16\"],\"_linklist\":\"< 8\",\"module\":true,\"node:module\":[\">= 14.18 && < 15\",\">= 16\"],\"net\":true,\"node:net\":[\">= 14.18 && < 15\",\">= 16\"],\"node-inspect/lib/_inspect\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6 && < 12\",\"os\":true,\"node:os\":[\">= 14.18 && < 15\",\">= 16\"],\"path\":true,\"node:path\":[\">= 14.18 && < 15\",\">= 16\"],\"path/posix\":\">= 15.3\",\"node:path/posix\":\">= 16\",\"path/win32\":\">= 15.3\",\"node:path/win32\":\">= 16\",\"perf_hooks\":\">= 8.5\",\"node:perf_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"process\":\">= 1\",\"node:process\":[\">= 14.18 && < 15\",\">= 16\"],\"punycode\":\">= 0.5\",\"node:punycode\":[\">= 14.18 && < 15\",\">= 16\"],\"querystring\":true,\"node:querystring\":[\">= 14.18 && < 15\",\">= 16\"],\"readline\":true,\"node:readline\":[\">= 14.18 && < 15\",\">= 16\"],\"readline/promises\":\">= 17\",\"node:readline/promises\":\">= 17\",\"repl\":true,\"node:repl\":[\">= 14.18 && < 15\",\">= 16\"],\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"node:_stream_duplex\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_transform\":\">= 0.9.4\",\"node:_stream_transform\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_wrap\":\">= 1.4.1\",\"node:_stream_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_passthrough\":\">= 0.9.4\",\"node:_stream_passthrough\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_readable\":\">= 0.9.4\",\"node:_stream_readable\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_writable\":\">= 0.9.4\",\"node:_stream_writable\":[\">= 14.18 && < 15\",\">= 16\"],\"stream\":true,\"node:stream\":[\">= 14.18 && < 15\",\">= 16\"],\"stream/consumers\":\">= 16.7\",\"node:stream/consumers\":\">= 16.7\",\"stream/promises\":\">= 15\",\"node:stream/promises\":\">= 16\",\"stream/web\":\">= 16.5\",\"node:stream/web\":\">= 16.5\",\"string_decoder\":true,\"node:string_decoder\":[\">= 14.18 && < 15\",\">= 16\"],\"sys\":[\">= 0.4 && < 0.7\",\">= 0.8\"],\"node:sys\":[\">= 14.18 && < 15\",\">= 16\"],\"timers\":true,\"node:timers\":[\">= 14.18 && < 15\",\">= 16\"],\"timers/promises\":\">= 15\",\"node:timers/promises\":\">= 16\",\"_tls_common\":\">= 0.11.13\",\"node:_tls_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"node:_tls_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"tls\":true,\"node:tls\":[\">= 14.18 && < 15\",\">= 16\"],\"trace_events\":\">= 10\",\"node:trace_events\":[\">= 14.18 && < 15\",\">= 16\"],\"tty\":true,\"node:tty\":[\">= 14.18 && < 15\",\">= 16\"],\"url\":true,\"node:url\":[\">= 14.18 && < 15\",\">= 16\"],\"util\":true,\"node:util\":[\">= 14.18 && < 15\",\">= 16\"],\"util/types\":\">= 15.3\",\"node:util/types\":\">= 16\",\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/consarray\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/logreader\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8\":\">= 1\",\"node:v8\":[\">= 14.18 && < 15\",\">= 16\"],\"vm\":true,\"node:vm\":[\">= 14.18 && < 15\",\">= 16\"],\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"node:worker_threads\":[\">= 14.18 && < 15\",\">= 16\"],\"zlib\":\">= 0.5\",\"node:zlib\":[\">= 14.18 && < 15\",\">= 16\"]}"); - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs) +/***/ }), - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return null +/***/ "../../node_modules/is-core-module/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (Array.isArray(c)) - return c - } +"use strict"; - try { - return this._readdirEntries(abs, this.fs.readdirSync(abs)) - } catch (er) { - this._readdirError(abs, er) - return null - } -} -GlobSync.prototype._readdirEntries = function (abs, entries) { - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } - } +var has = __webpack_require__("../../node_modules/has/src/index.js"); - this.cache[abs] = entries +function specifierIncluded(current, specifier) { + var nodeParts = current.split('.'); + var parts = specifier.split(' '); + var op = parts.length > 1 ? parts[0] : '='; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); - // mark and cache dir-ness - return entries + for (var i = 0; i < 3; ++i) { + var cur = parseInt(nodeParts[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + if (op === '<') { + return cur < ver; + } + if (op === '>=') { + return cur >= ver; + } + return false; + } + return op === '>='; } -GlobSync.prototype._readdirError = function (f, er) { - // handle errors, and cache the information - switch (er.code) { - case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 - case 'ENOTDIR': // totally normal. means it *does* exist. - var abs = this._makeAbs(f) - this.cache[abs] = 'FILE' - if (abs === this.cwdAbs) { - var error = new Error(er.code + ' invalid cwd ' + this.cwd) - error.path = this.cwd - error.code = er.code - throw error - } - break +function matchesRange(current, range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { + return false; + } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(current, specifiers[i])) { + return false; + } + } + return true; +} - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break +function versionIncluded(nodeVersion, specifierValue) { + if (typeof specifierValue === 'boolean') { + return specifierValue; + } - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) - throw er - if (!this.silent) - console.error('glob error', er) - break - } -} + var current = typeof nodeVersion === 'undefined' + ? process.versions && process.versions.node + : nodeVersion; -GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + if (typeof current !== 'string') { + throw new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required'); + } - var entries = this._readdir(abs, inGlobStar) + if (specifierValue && typeof specifierValue === 'object') { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(current, specifierValue[i])) { + return true; + } + } + return false; + } + return matchesRange(current, specifierValue); +} - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return +var data = __webpack_require__("../../node_modules/is-core-module/core.json"); - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) +module.exports = function isCore(x, nodeVersion) { + return has(data, x) && versionIncluded(nodeVersion, data[x]); +}; - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false) - var len = entries.length - var isSym = this.symlinks[abs] +/***/ }), - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return +/***/ "../../node_modules/is-extglob/index.js": +/***/ (function(module, exports) { - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true) +module.exports = function isExtglob(str) { + if (typeof str !== 'string' || str === '') { + return false; + } - var below = gspref.concat(entries[i], remain) - this._process(below, index, true) + var match; + while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) { + if (match[2]) return true; + str = str.slice(match.index + match[0].length); } -} -GlobSync.prototype._processSimple = function (prefix, index) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var exists = this._stat(prefix) + return false; +}; - if (!this.matches[index]) - this.matches[index] = Object.create(null) - // If it doesn't exist, then just mark the lack of results - if (!exists) - return +/***/ }), - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } +/***/ "../../node_modules/is-glob/index.js": +/***/ (function(module, exports, __webpack_require__) { + +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + +var isExtglob = __webpack_require__("../../node_modules/is-extglob/index.js"); +var chars = { '{': '}', '(': ')', '[': ']'}; +var strictCheck = function(str) { + if (str[0] === '!') { + return true; } + var index = 0; + var pipeIndex = -2; + var closeSquareIndex = -2; + var closeCurlyIndex = -2; + var closeParenIndex = -2; + var backSlashIndex = -2; + while (index < str.length) { + if (str[index] === '*') { + return true; + } - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') + if (str[index + 1] === '?' && /[\].+)]/.test(str[index])) { + return true; + } - // Mark this as a match - this._emitMatch(index, prefix) -} + if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') { + if (closeSquareIndex < index) { + closeSquareIndex = str.indexOf(']', index); + } + if (closeSquareIndex > index) { + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { + return true; + } + } + } -// Returns either 'DIR', 'FILE', or false -GlobSync.prototype._stat = function (f) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' + if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') { + closeCurlyIndex = str.indexOf('}', index); + if (closeCurlyIndex > index) { + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { + return true; + } + } + } - if (f.length > this.maxLength) - return false + if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') { + closeParenIndex = str.indexOf(')', index); + if (closeParenIndex > index) { + backSlashIndex = str.indexOf('\\', index); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] + if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') { + if (pipeIndex < index) { + pipeIndex = str.indexOf('|', index); + } + if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') { + closeParenIndex = str.indexOf(')', pipeIndex); + if (closeParenIndex > pipeIndex) { + backSlashIndex = str.indexOf('\\', pipeIndex); + if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { + return true; + } + } + } + } - if (Array.isArray(c)) - c = 'DIR' + if (str[index] === '\\') { + var open = str[index + 1]; + index += 2; + var close = chars[open]; - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return c + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } + } - if (needDir && c === 'FILE') - return false + if (str[index] === '!') { + return true; + } + } else { + index++; + } + } + return false; +}; - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. +var relaxedCheck = function(str) { + if (str[0] === '!') { + return true; } + var index = 0; + while (index < str.length) { + if (/[*?{}()[\]]/.test(str[index])) { + return true; + } - var exists - var stat = this.statCache[abs] - if (!stat) { - var lstat - try { - lstat = this.fs.lstatSync(abs) - } catch (er) { - if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { - this.statCache[abs] = false - return false + if (str[index] === '\\') { + var open = str[index + 1]; + index += 2; + var close = chars[open]; + + if (close) { + var n = str.indexOf(close, index); + if (n !== -1) { + index = n + 1; + } } - } - if (lstat && lstat.isSymbolicLink()) { - try { - stat = this.fs.statSync(abs) - } catch (er) { - stat = lstat + if (str[index] === '!') { + return true; } } else { - stat = lstat + index++; } } + return false; +}; - this.statCache[abs] = stat - - var c = true - if (stat) - c = stat.isDirectory() ? 'DIR' : 'FILE' - - this.cache[abs] = this.cache[abs] || c +module.exports = function isGlob(str, options) { + if (typeof str !== 'string' || str === '') { + return false; + } - if (needDir && c === 'FILE') - return false + if (isExtglob(str)) { + return true; + } - return c -} + var check = strictCheck; -GlobSync.prototype._mark = function (p) { - return common.mark(this, p) -} + // optionally relax check + if (options && options.strict === false) { + check = relaxedCheck; + } -GlobSync.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} + return check(str); +}; /***/ }), -/***/ "../../node_modules/globby/gitignore.js": +/***/ "../../node_modules/is-interactive/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const {promisify} = __webpack_require__("util"); -const fs = __webpack_require__("fs"); -const path = __webpack_require__("path"); -const fastGlob = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/index.js"); -const gitIgnore = __webpack_require__("../../node_modules/ignore/index.js"); -const slash = __webpack_require__("../../node_modules/slash/index.js"); - -const DEFAULT_IGNORE = [ - '**/node_modules/**', - '**/flow-typed/**', - '**/coverage/**', - '**/.git' -]; -const readFileP = promisify(fs.readFile); +module.exports = ({stream = process.stdout} = {}) => { + return Boolean( + stream && stream.isTTY && + process.env.TERM !== 'dumb' && + !('CI' in process.env) + ); +}; -const mapGitIgnorePatternTo = base => ignore => { - if (ignore.startsWith('!')) { - return '!' + path.posix.join(base, ignore.slice(1)); - } - return path.posix.join(base, ignore); -}; +/***/ }), -const parseGitIgnore = (content, options) => { - const base = slash(path.relative(options.cwd, path.dirname(options.fileName))); +/***/ "../../node_modules/is-path-cwd/index.js": +/***/ (function(module, exports, __webpack_require__) { - return content - .split(/\r?\n/) - .filter(Boolean) - .filter(line => !line.startsWith('#')) - .map(mapGitIgnorePatternTo(base)); -}; +"use strict"; -const reduceIgnore = files => { - const ignores = gitIgnore(); - for (const file of files) { - ignores.add(parseGitIgnore(file.content, { - cwd: file.cwd, - fileName: file.filePath - })); - } +const path = __webpack_require__("path"); - return ignores; -}; +module.exports = path_ => { + let cwd = process.cwd(); -const ensureAbsolutePathForCwd = (cwd, p) => { - cwd = slash(cwd); - if (path.isAbsolute(p)) { - if (slash(p).startsWith(cwd)) { - return p; - } + path_ = path.resolve(path_); - throw new Error(`Path ${p} is not in cwd ${cwd}`); + if (process.platform === 'win32') { + cwd = cwd.toLowerCase(); + path_ = path_.toLowerCase(); } - return path.join(cwd, p); + return path_ === cwd; }; -const getIsIgnoredPredecate = (ignores, cwd) => { - return p => ignores.ignores(slash(path.relative(cwd, ensureAbsolutePathForCwd(cwd, p.path || p)))); -}; -const getFile = async (file, cwd) => { - const filePath = path.join(cwd, file); - const content = await readFileP(filePath, 'utf8'); +/***/ }), - return { - cwd, - filePath, - content - }; -}; +/***/ "../../node_modules/is-path-inside/index.js": +/***/ (function(module, exports, __webpack_require__) { -const getFileSync = (file, cwd) => { - const filePath = path.join(cwd, file); - const content = fs.readFileSync(filePath, 'utf8'); +"use strict"; - return { - cwd, - filePath, - content - }; -}; +const path = __webpack_require__("path"); -const normalizeOptions = ({ - ignore = [], - cwd = slash(process.cwd()) -} = {}) => { - return {ignore, cwd}; -}; +module.exports = (childPath, parentPath) => { + childPath = path.resolve(childPath); + parentPath = path.resolve(parentPath); -module.exports = async options => { - options = normalizeOptions(options); + if (process.platform === 'win32') { + childPath = childPath.toLowerCase(); + parentPath = parentPath.toLowerCase(); + } - const paths = await fastGlob('**/.gitignore', { - ignore: DEFAULT_IGNORE.concat(options.ignore), - cwd: options.cwd - }); + if (childPath === parentPath) { + return false; + } - const files = await Promise.all(paths.map(file => getFile(file, options.cwd))); - const ignores = reduceIgnore(files); + childPath += path.sep; + parentPath += path.sep; - return getIsIgnoredPredecate(ignores, options.cwd); + return childPath.startsWith(parentPath); }; -module.exports.sync = options => { - options = normalizeOptions(options); - const paths = fastGlob.sync('**/.gitignore', { - ignore: DEFAULT_IGNORE.concat(options.ignore), - cwd: options.cwd - }); +/***/ }), - const files = paths.map(file => getFileSync(file, options.cwd)); - const ignores = reduceIgnore(files); +/***/ "../../node_modules/is-plain-obj/index.js": +/***/ (function(module, exports, __webpack_require__) { - return getIsIgnoredPredecate(ignores, options.cwd); +"use strict"; + + +module.exports = value => { + if (Object.prototype.toString.call(value) !== '[object Object]') { + return false; + } + + const prototype = Object.getPrototypeOf(value); + return prototype === null || prototype === Object.prototype; }; /***/ }), -/***/ "../../node_modules/globby/index.js": +/***/ "../../node_modules/is-stream/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const fs = __webpack_require__("fs"); -const arrayUnion = __webpack_require__("../../node_modules/array-union/index.js"); -const merge2 = __webpack_require__("../../node_modules/merge2/index.js"); -const fastGlob = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/index.js"); -const dirGlob = __webpack_require__("../../node_modules/dir-glob/index.js"); -const gitignore = __webpack_require__("../../node_modules/globby/gitignore.js"); -const {FilterStream, UniqueStream} = __webpack_require__("../../node_modules/globby/stream-utils.js"); - -const DEFAULT_FILTER = () => false; - -const isNegative = pattern => pattern[0] === '!'; - -const assertPatternsInput = patterns => { - if (!patterns.every(pattern => typeof pattern === 'string')) { - throw new TypeError('Patterns must be a string or an array of strings'); - } -}; - -const checkCwdOption = (options = {}) => { - if (!options.cwd) { - return; - } - - let stat; - try { - stat = fs.statSync(options.cwd); - } catch { - return; - } - - if (!stat.isDirectory()) { - throw new Error('The `cwd` option must be a path to a directory'); - } -}; - -const getPathString = p => p.stats instanceof fs.Stats ? p.path : p; - -const generateGlobTasks = (patterns, taskOptions) => { - patterns = arrayUnion([].concat(patterns)); - assertPatternsInput(patterns); - checkCwdOption(taskOptions); - - const globTasks = []; - - taskOptions = { - ignore: [], - expandDirectories: true, - ...taskOptions - }; - - for (const [index, pattern] of patterns.entries()) { - if (isNegative(pattern)) { - continue; - } - const ignore = patterns - .slice(index) - .filter(pattern => isNegative(pattern)) - .map(pattern => pattern.slice(1)); +const isStream = stream => + stream !== null && + typeof stream === 'object' && + typeof stream.pipe === 'function'; - const options = { - ...taskOptions, - ignore: taskOptions.ignore.concat(ignore) - }; +isStream.writable = stream => + isStream(stream) && + stream.writable !== false && + typeof stream._write === 'function' && + typeof stream._writableState === 'object'; - globTasks.push({pattern, options}); - } +isStream.readable = stream => + isStream(stream) && + stream.readable !== false && + typeof stream._read === 'function' && + typeof stream._readableState === 'object'; - return globTasks; -}; +isStream.duplex = stream => + isStream.writable(stream) && + isStream.readable(stream); -const globDirs = (task, fn) => { - let options = {}; - if (task.options.cwd) { - options.cwd = task.options.cwd; - } +isStream.transform = stream => + isStream.duplex(stream) && + typeof stream._transform === 'function' && + typeof stream._transformState === 'object'; - if (Array.isArray(task.options.expandDirectories)) { - options = { - ...options, - files: task.options.expandDirectories - }; - } else if (typeof task.options.expandDirectories === 'object') { - options = { - ...options, - ...task.options.expandDirectories - }; - } +module.exports = isStream; - return fn(task.pattern, options); -}; -const getPattern = (task, fn) => task.options.expandDirectories ? globDirs(task, fn) : [task.pattern]; +/***/ }), -const getFilterSync = options => { - return options && options.gitignore ? - gitignore.sync({cwd: options.cwd, ignore: options.ignore}) : - DEFAULT_FILTER; -}; +/***/ "../../node_modules/isexe/index.js": +/***/ (function(module, exports, __webpack_require__) { -const globToTask = task => glob => { - const {options} = task; - if (options.ignore && Array.isArray(options.ignore) && options.expandDirectories) { - options.ignore = dirGlob.sync(options.ignore); - } +var fs = __webpack_require__("fs") +var core +if (process.platform === 'win32' || global.TESTING_WINDOWS) { + core = __webpack_require__("../../node_modules/isexe/windows.js") +} else { + core = __webpack_require__("../../node_modules/isexe/mode.js") +} - return { - pattern: glob, - options - }; -}; +module.exports = isexe +isexe.sync = sync -module.exports = async (patterns, options) => { - const globTasks = generateGlobTasks(patterns, options); +function isexe (path, options, cb) { + if (typeof options === 'function') { + cb = options + options = {} + } - const getFilter = async () => { - return options && options.gitignore ? - gitignore({cwd: options.cwd, ignore: options.ignore}) : - DEFAULT_FILTER; - }; + if (!cb) { + if (typeof Promise !== 'function') { + throw new TypeError('callback not provided') + } - const getTasks = async () => { - const tasks = await Promise.all(globTasks.map(async task => { - const globs = await getPattern(task, dirGlob); - return Promise.all(globs.map(globToTask(task))); - })); + return new Promise(function (resolve, reject) { + isexe(path, options || {}, function (er, is) { + if (er) { + reject(er) + } else { + resolve(is) + } + }) + }) + } - return arrayUnion(...tasks); - }; + core(path, options || {}, function (er, is) { + // ignore EACCES because that just means we aren't allowed to run it + if (er) { + if (er.code === 'EACCES' || options && options.ignoreErrors) { + er = null + is = false + } + } + cb(er, is) + }) +} - const [filter, tasks] = await Promise.all([getFilter(), getTasks()]); - const paths = await Promise.all(tasks.map(task => fastGlob(task.pattern, task.options))); +function sync (path, options) { + // my kingdom for a filtered catch + try { + return core.sync(path, options || {}) + } catch (er) { + if (options && options.ignoreErrors || er.code === 'EACCES') { + return false + } else { + throw er + } + } +} - return arrayUnion(...paths).filter(path_ => !filter(getPathString(path_))); -}; -module.exports.sync = (patterns, options) => { - const globTasks = generateGlobTasks(patterns, options); +/***/ }), - const tasks = []; - for (const task of globTasks) { - const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); - tasks.push(...newTask); - } +/***/ "../../node_modules/isexe/mode.js": +/***/ (function(module, exports, __webpack_require__) { - const filter = getFilterSync(options); +module.exports = isexe +isexe.sync = sync - let matches = []; - for (const task of tasks) { - matches = arrayUnion(matches, fastGlob.sync(task.pattern, task.options)); - } +var fs = __webpack_require__("fs") - return matches.filter(path_ => !filter(path_)); -}; +function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, options)) + }) +} -module.exports.stream = (patterns, options) => { - const globTasks = generateGlobTasks(patterns, options); +function sync (path, options) { + return checkStat(fs.statSync(path), options) +} - const tasks = []; - for (const task of globTasks) { - const newTask = getPattern(task, dirGlob.sync).map(globToTask(task)); - tasks.push(...newTask); - } +function checkStat (stat, options) { + return stat.isFile() && checkMode(stat, options) +} - const filter = getFilterSync(options); - const filterStream = new FilterStream(p => !filter(p)); - const uniqueStream = new UniqueStream(); +function checkMode (stat, options) { + var mod = stat.mode + var uid = stat.uid + var gid = stat.gid - return merge2(tasks.map(task => fastGlob.stream(task.pattern, task.options))) - .pipe(filterStream) - .pipe(uniqueStream); -}; + var myUid = options.uid !== undefined ? + options.uid : process.getuid && process.getuid() + var myGid = options.gid !== undefined ? + options.gid : process.getgid && process.getgid() -module.exports.generateGlobTasks = generateGlobTasks; + var u = parseInt('100', 8) + var g = parseInt('010', 8) + var o = parseInt('001', 8) + var ug = u | g -module.exports.hasMagic = (patterns, options) => [] - .concat(patterns) - .some(pattern => fastGlob.isDynamicPattern(pattern, options)); + var ret = (mod & o) || + (mod & g) && gid === myGid || + (mod & u) && uid === myUid || + (mod & ug) && myUid === 0 -module.exports.gitignore = gitignore; + return ret +} /***/ }), -/***/ "../../node_modules/globby/node_modules/fast-glob/out/index.js": +/***/ "../../node_modules/isexe/windows.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; - -const taskManager = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/managers/tasks.js"); -const async_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/async.js"); -const stream_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/stream.js"); -const sync_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/sync.js"); -const settings_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/settings.js"); -const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); -async function FastGlob(source, options) { - assertPatternsInput(source); - const works = getWorks(source, async_1.default, options); - const result = await Promise.all(works); - return utils.array.flatten(result); -} -// https://github.com/typescript-eslint/typescript-eslint/issues/60 -// eslint-disable-next-line no-redeclare -(function (FastGlob) { - function sync(source, options) { - assertPatternsInput(source); - const works = getWorks(source, sync_1.default, options); - return utils.array.flatten(works); - } - FastGlob.sync = sync; - function stream(source, options) { - assertPatternsInput(source); - const works = getWorks(source, stream_1.default, options); - /** - * The stream returned by the provider cannot work with an asynchronous iterator. - * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams. - * This affects performance (+25%). I don't see best solution right now. - */ - return utils.stream.merge(works); - } - FastGlob.stream = stream; - function generateTasks(source, options) { - assertPatternsInput(source); - const patterns = [].concat(source); - const settings = new settings_1.default(options); - return taskManager.generate(patterns, settings); - } - FastGlob.generateTasks = generateTasks; - function isDynamicPattern(source, options) { - assertPatternsInput(source); - const settings = new settings_1.default(options); - return utils.pattern.isDynamicPattern(source, settings); - } - FastGlob.isDynamicPattern = isDynamicPattern; - function escapePath(source) { - assertPatternsInput(source); - return utils.path.escape(source); - } - FastGlob.escapePath = escapePath; -})(FastGlob || (FastGlob = {})); -function getWorks(source, _Provider, options) { - const patterns = [].concat(source); - const settings = new settings_1.default(options); - const tasks = taskManager.generate(patterns, settings); - const provider = new _Provider(settings); - return tasks.map(provider.read, provider); -} -function assertPatternsInput(input) { - const source = [].concat(input); - const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); - if (!isValidSource) { - throw new TypeError('Patterns must be a string (non empty) or an array of strings'); - } -} -module.exports = FastGlob; - +module.exports = isexe +isexe.sync = sync -/***/ }), +var fs = __webpack_require__("fs") -/***/ "../../node_modules/globby/node_modules/fast-glob/out/managers/tasks.js": -/***/ (function(module, exports, __webpack_require__) { +function checkPathExt (path, options) { + var pathext = options.pathExt !== undefined ? + options.pathExt : process.env.PATHEXT -"use strict"; + if (!pathext) { + return true + } -Object.defineProperty(exports, "__esModule", { value: true }); -exports.convertPatternGroupToTask = exports.convertPatternGroupsToTasks = exports.groupPatternsByBaseDirectory = exports.getNegativePatternsAsPositive = exports.getPositivePatterns = exports.convertPatternsToTasks = exports.generate = void 0; -const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); -function generate(patterns, settings) { - const positivePatterns = getPositivePatterns(patterns); - const negativePatterns = getNegativePatternsAsPositive(patterns, settings.ignore); - const staticPatterns = positivePatterns.filter((pattern) => utils.pattern.isStaticPattern(pattern, settings)); - const dynamicPatterns = positivePatterns.filter((pattern) => utils.pattern.isDynamicPattern(pattern, settings)); - const staticTasks = convertPatternsToTasks(staticPatterns, negativePatterns, /* dynamic */ false); - const dynamicTasks = convertPatternsToTasks(dynamicPatterns, negativePatterns, /* dynamic */ true); - return staticTasks.concat(dynamicTasks); -} -exports.generate = generate; -/** - * Returns tasks grouped by basic pattern directories. - * - * Patterns that can be found inside (`./`) and outside (`../`) the current directory are handled separately. - * This is necessary because directory traversal starts at the base directory and goes deeper. - */ -function convertPatternsToTasks(positive, negative, dynamic) { - const tasks = []; - const patternsOutsideCurrentDirectory = utils.pattern.getPatternsOutsideCurrentDirectory(positive); - const patternsInsideCurrentDirectory = utils.pattern.getPatternsInsideCurrentDirectory(positive); - const outsideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsOutsideCurrentDirectory); - const insideCurrentDirectoryGroup = groupPatternsByBaseDirectory(patternsInsideCurrentDirectory); - tasks.push(...convertPatternGroupsToTasks(outsideCurrentDirectoryGroup, negative, dynamic)); - /* - * For the sake of reducing future accesses to the file system, we merge all tasks within the current directory - * into a global task, if at least one pattern refers to the root (`.`). In this case, the global task covers the rest. - */ - if ('.' in insideCurrentDirectoryGroup) { - tasks.push(convertPatternGroupToTask('.', patternsInsideCurrentDirectory, negative, dynamic)); - } - else { - tasks.push(...convertPatternGroupsToTasks(insideCurrentDirectoryGroup, negative, dynamic)); + pathext = pathext.split(';') + if (pathext.indexOf('') !== -1) { + return true + } + for (var i = 0; i < pathext.length; i++) { + var p = pathext[i].toLowerCase() + if (p && path.substr(-p.length).toLowerCase() === p) { + return true } - return tasks; -} -exports.convertPatternsToTasks = convertPatternsToTasks; -function getPositivePatterns(patterns) { - return utils.pattern.getPositivePatterns(patterns); -} -exports.getPositivePatterns = getPositivePatterns; -function getNegativePatternsAsPositive(patterns, ignore) { - const negative = utils.pattern.getNegativePatterns(patterns).concat(ignore); - const positive = negative.map(utils.pattern.convertToPositivePattern); - return positive; + } + return false } -exports.getNegativePatternsAsPositive = getNegativePatternsAsPositive; -function groupPatternsByBaseDirectory(patterns) { - const group = {}; - return patterns.reduce((collection, pattern) => { - const base = utils.pattern.getBaseDirectory(pattern); - if (base in collection) { - collection[base].push(pattern); - } - else { - collection[base] = [pattern]; - } - return collection; - }, group); + +function checkStat (stat, path, options) { + if (!stat.isSymbolicLink() && !stat.isFile()) { + return false + } + return checkPathExt(path, options) } -exports.groupPatternsByBaseDirectory = groupPatternsByBaseDirectory; -function convertPatternGroupsToTasks(positive, negative, dynamic) { - return Object.keys(positive).map((base) => { - return convertPatternGroupToTask(base, positive[base], negative, dynamic); - }); + +function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, path, options)) + }) } -exports.convertPatternGroupsToTasks = convertPatternGroupsToTasks; -function convertPatternGroupToTask(base, positive, negative, dynamic) { - return { - dynamic, - positive, - negative, - base, - patterns: [].concat(positive, negative.map(utils.pattern.convertToNegativePattern)) - }; + +function sync (path, options) { + return checkStat(fs.statSync(path), path, options) } -exports.convertPatternGroupToTask = convertPatternGroupToTask; /***/ }), -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/async.js": +/***/ "../../node_modules/json-parse-better-errors/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/stream.js"); -const provider_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/provider.js"); -class ProviderAsync extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new stream_1.default(this._settings); - } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const entries = []; - return new Promise((resolve, reject) => { - const stream = this.api(root, task, options); - stream.once('error', reject); - stream.on('data', (entry) => entries.push(options.transform(entry))); - stream.once('end', () => resolve(entries)); - }); + +module.exports = parseJson +function parseJson (txt, reviver, context) { + context = context || 20 + try { + return JSON.parse(txt, reviver) + } catch (e) { + if (typeof txt !== 'string') { + const isEmptyArray = Array.isArray(txt) && txt.length === 0 + const errorMessage = 'Cannot parse ' + + (isEmptyArray ? 'an empty array' : String(txt)) + throw new TypeError(errorMessage) } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); + const syntaxErr = e.message.match(/^Unexpected token.*position\s+(\d+)/i) + const errIdx = syntaxErr + ? +syntaxErr[1] + : e.message.match(/^Unexpected end of JSON.*/i) + ? txt.length - 1 + : null + if (errIdx != null) { + const start = errIdx <= context + ? 0 + : errIdx - context + const end = errIdx + context >= txt.length + ? txt.length + : errIdx + context + e.message += ` while parsing near '${ + start === 0 ? '' : '...' + }${txt.slice(start, end)}${ + end === txt.length ? '' : '...' + }'` + } else { + e.message += ` while parsing '${txt.slice(0, context * 2)}'` } + throw e + } } -exports.default = ProviderAsync; /***/ }), -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/filters/deep.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/lines-and-columns/dist/index.mjs": +/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) { "use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); -const partial_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/matchers/partial.js"); -class DeepFilter { - constructor(_settings, _micromatchOptions) { - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - } - getFilter(basePath, positive, negative) { - const matcher = this._getMatcher(positive); - const negativeRe = this._getNegativePatternsRe(negative); - return (entry) => this._filter(basePath, entry, matcher, negativeRe); - } - _getMatcher(patterns) { - return new partial_1.default(patterns, this._settings, this._micromatchOptions); - } - _getNegativePatternsRe(patterns) { - const affectDepthOfReadingPatterns = patterns.filter(utils.pattern.isAffectDepthOfReadingPattern); - return utils.pattern.convertPatternsToRe(affectDepthOfReadingPatterns, this._micromatchOptions); - } - _filter(basePath, entry, matcher, negativeRe) { - if (this._isSkippedByDeep(basePath, entry.path)) { - return false; +__webpack_require__.r(__webpack_exports__); +var LF = '\n'; +var CR = '\r'; +var LinesAndColumns = (function () { + function LinesAndColumns(string) { + this.string = string; + var offsets = [0]; + for (var offset = 0; offset < string.length;) { + switch (string[offset]) { + case LF: + offset += LF.length; + offsets.push(offset); + break; + case CR: + offset += CR.length; + if (string[offset] === LF) { + offset += LF.length; + } + offsets.push(offset); + break; + default: + offset++; + break; + } } - if (this._isSkippedSymbolicLink(entry)) { - return false; + this.offsets = offsets; + } + LinesAndColumns.prototype.locationForIndex = function (index) { + if (index < 0 || index > this.string.length) { + return null; } - const filepath = utils.path.removeLeadingDotSegment(entry.path); - if (this._isSkippedByPositivePatterns(filepath, matcher)) { - return false; + var line = 0; + var offsets = this.offsets; + while (offsets[line + 1] <= index) { + line++; } - return this._isSkippedByNegativePatterns(filepath, negativeRe); - } - _isSkippedByDeep(basePath, entryPath) { - /** - * Avoid unnecessary depth calculations when it doesn't matter. - */ - if (this._settings.deep === Infinity) { - return false; + var column = index - offsets[line]; + return { line: line, column: column }; + }; + LinesAndColumns.prototype.indexForLocation = function (location) { + var line = location.line, column = location.column; + if (line < 0 || line >= this.offsets.length) { + return null; } - return this._getEntryLevel(basePath, entryPath) >= this._settings.deep; - } - _getEntryLevel(basePath, entryPath) { - const entryPathDepth = entryPath.split('/').length; - if (basePath === '') { - return entryPathDepth; + if (column < 0 || column > this.lengthOfLine(line)) { + return null; } - const basePathDepth = basePath.split('/').length; - return entryPathDepth - basePathDepth; - } - _isSkippedSymbolicLink(entry) { - return !this._settings.followSymbolicLinks && entry.dirent.isSymbolicLink(); - } - _isSkippedByPositivePatterns(entryPath, matcher) { - return !this._settings.baseNameMatch && !matcher.match(entryPath); - } - _isSkippedByNegativePatterns(entryPath, patternsRe) { - return !utils.pattern.matchAny(entryPath, patternsRe); - } -} -exports.default = DeepFilter; + return this.offsets[line] + column; + }; + LinesAndColumns.prototype.lengthOfLine = function (line) { + var offset = this.offsets[line]; + var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1]; + return nextOffset - offset; + }; + return LinesAndColumns; +}()); +/* harmony default export */ __webpack_exports__["default"] = (LinesAndColumns); /***/ }), -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/filters/entry.js": +/***/ "../../node_modules/load-json-file/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); -class EntryFilter { - constructor(_settings, _micromatchOptions) { - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - this.index = new Map(); - } - getFilter(positive, negative) { - const positiveRe = utils.pattern.convertPatternsToRe(positive, this._micromatchOptions); - const negativeRe = utils.pattern.convertPatternsToRe(negative, this._micromatchOptions); - return (entry) => this._filter(entry, positiveRe, negativeRe); - } - _filter(entry, positiveRe, negativeRe) { - if (this._settings.unique && this._isDuplicateEntry(entry)) { - return false; - } - if (this._onlyFileFilter(entry) || this._onlyDirectoryFilter(entry)) { - return false; - } - if (this._isSkippedByAbsoluteNegativePatterns(entry.path, negativeRe)) { - return false; - } - const filepath = this._settings.baseNameMatch ? entry.name : entry.path; - const isMatched = this._isMatchToPatterns(filepath, positiveRe) && !this._isMatchToPatterns(entry.path, negativeRe); - if (this._settings.unique && isMatched) { - this._createIndexRecord(entry); - } - return isMatched; - } - _isDuplicateEntry(entry) { - return this.index.has(entry.path); - } - _createIndexRecord(entry) { - this.index.set(entry.path, undefined); - } - _onlyFileFilter(entry) { - return this._settings.onlyFiles && !entry.dirent.isFile(); - } - _onlyDirectoryFilter(entry) { - return this._settings.onlyDirectories && !entry.dirent.isDirectory(); - } - _isSkippedByAbsoluteNegativePatterns(entryPath, patternsRe) { - if (!this._settings.absolute) { - return false; - } - const fullpath = utils.path.makeAbsolute(this._settings.cwd, entryPath); - return utils.pattern.matchAny(fullpath, patternsRe); - } - _isMatchToPatterns(entryPath, patternsRe) { - const filepath = utils.path.removeLeadingDotSegment(entryPath); - return utils.pattern.matchAny(filepath, patternsRe); - } -} -exports.default = EntryFilter; - +const path = __webpack_require__("path"); +const {promisify} = __webpack_require__("util"); +const fs = __webpack_require__("../../node_modules/graceful-fs/graceful-fs.js"); +const stripBom = __webpack_require__("../../node_modules/strip-bom/index.js"); +const parseJson = __webpack_require__("../../node_modules/parse-json/index.js"); -/***/ }), +const parse = (data, filePath, options = {}) => { + data = stripBom(data); -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/filters/error.js": -/***/ (function(module, exports, __webpack_require__) { + if (typeof options.beforeParse === 'function') { + data = options.beforeParse(data); + } -"use strict"; + return parseJson(data, options.reviver, path.relative(process.cwd(), filePath)); +}; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); -class ErrorFilter { - constructor(_settings) { - this._settings = _settings; - } - getFilter() { - return (error) => this._isNonFatalError(error); - } - _isNonFatalError(error) { - return utils.errno.isEnoentCodeError(error) || this._settings.suppressErrors; - } -} -exports.default = ErrorFilter; +module.exports = async (filePath, options) => parse(await promisify(fs.readFile)(filePath, 'utf8'), filePath, options); +module.exports.sync = (filePath, options) => parse(fs.readFileSync(filePath, 'utf8'), filePath, options); /***/ }), -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/matchers/matcher.js": +/***/ "../../node_modules/merge-stream/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); -class Matcher { - constructor(_patterns, _settings, _micromatchOptions) { - this._patterns = _patterns; - this._settings = _settings; - this._micromatchOptions = _micromatchOptions; - this._storage = []; - this._fillStorage(); - } - _fillStorage() { - /** - * The original pattern may include `{,*,**,a/*}`, which will lead to problems with matching (unresolved level). - * So, before expand patterns with brace expansion into separated patterns. - */ - const patterns = utils.pattern.expandPatternsWithBraceExpansion(this._patterns); - for (const pattern of patterns) { - const segments = this._getPatternSegments(pattern); - const sections = this._splitSegmentsIntoSections(segments); - this._storage.push({ - complete: sections.length <= 1, - pattern, - segments, - sections - }); - } - } - _getPatternSegments(pattern) { - const parts = utils.pattern.getPatternParts(pattern, this._micromatchOptions); - return parts.map((part) => { - const dynamic = utils.pattern.isDynamicPattern(part, this._settings); - if (!dynamic) { - return { - dynamic: false, - pattern: part - }; - } - return { - dynamic: true, - pattern: part, - patternRe: utils.pattern.makeRe(part, this._micromatchOptions) - }; - }); - } - _splitSegmentsIntoSections(segments) { - return utils.array.splitWhen(segments, (segment) => segment.dynamic && utils.pattern.hasGlobStar(segment.pattern)); - } -} -exports.default = Matcher; +const { PassThrough } = __webpack_require__("stream"); -/***/ }), +module.exports = function (/*streams...*/) { + var sources = [] + var output = new PassThrough({objectMode: true}) -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/matchers/partial.js": -/***/ (function(module, exports, __webpack_require__) { + output.setMaxListeners(0) -"use strict"; + output.add = add + output.isEmpty = isEmpty -Object.defineProperty(exports, "__esModule", { value: true }); -const matcher_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/matchers/matcher.js"); -class PartialMatcher extends matcher_1.default { - match(filepath) { - const parts = filepath.split('/'); - const levels = parts.length; - const patterns = this._storage.filter((info) => !info.complete || info.segments.length > levels); - for (const pattern of patterns) { - const section = pattern.sections[0]; - /** - * In this case, the pattern has a globstar and we must read all directories unconditionally, - * but only if the level has reached the end of the first group. - * - * fixtures/{a,b}/** - * ^ true/false ^ always true - */ - if (!pattern.complete && levels > section.length) { - return true; - } - const match = parts.every((part, index) => { - const segment = pattern.segments[index]; - if (segment.dynamic && segment.patternRe.test(part)) { - return true; - } - if (!segment.dynamic && segment.pattern === part) { - return true; - } - return false; - }); - if (match) { - return true; - } - } - return false; - } -} -exports.default = PartialMatcher; + output.on('unpipe', remove) + Array.prototype.slice.call(arguments).forEach(add) -/***/ }), + return output -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/provider.js": -/***/ (function(module, exports, __webpack_require__) { + function add (source) { + if (Array.isArray(source)) { + source.forEach(add) + return this + } -"use strict"; + sources.push(source); + source.once('end', remove.bind(null, source)) + source.once('error', output.emit.bind(output, 'error')) + source.pipe(output, {end: false}) + return this + } -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __webpack_require__("path"); -const deep_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/filters/deep.js"); -const entry_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/filters/entry.js"); -const error_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/filters/error.js"); -const entry_2 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/transformers/entry.js"); -class Provider { - constructor(_settings) { - this._settings = _settings; - this.errorFilter = new error_1.default(this._settings); - this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions()); - this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions()); - this.entryTransformer = new entry_2.default(this._settings); - } - _getRootDirectory(task) { - return path.resolve(this._settings.cwd, task.base); - } - _getReaderOptions(task) { - const basePath = task.base === '.' ? '' : task.base; - return { - basePath, - pathSegmentSeparator: '/', - concurrency: this._settings.concurrency, - deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative), - entryFilter: this.entryFilter.getFilter(task.positive, task.negative), - errorFilter: this.errorFilter.getFilter(), - followSymbolicLinks: this._settings.followSymbolicLinks, - fs: this._settings.fs, - stats: this._settings.stats, - throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink, - transform: this.entryTransformer.getTransformer() - }; - } - _getMicromatchOptions() { - return { - dot: this._settings.dot, - matchBase: this._settings.baseNameMatch, - nobrace: !this._settings.braceExpansion, - nocase: !this._settings.caseSensitiveMatch, - noext: !this._settings.extglob, - noglobstar: !this._settings.globstar, - posix: true, - strictSlashes: false - }; - } + function isEmpty () { + return sources.length == 0; + } + + function remove (source) { + sources = sources.filter(function (it) { return it !== source }) + if (!sources.length && output.readable) { output.end() } + } } -exports.default = Provider; /***/ }), -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/stream.js": +/***/ "../../node_modules/merge2/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__("stream"); -const stream_2 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/stream.js"); -const provider_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/provider.js"); -class ProviderStream extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new stream_2.default(this._settings); - } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const source = this.api(root, task, options); - const destination = new stream_1.Readable({ objectMode: true, read: () => { } }); - source - .once('error', (error) => destination.emit('error', error)) - .on('data', (entry) => destination.emit('data', options.transform(entry))) - .once('end', () => destination.emit('end')); - destination - .once('close', () => source.destroy()); - return destination; - } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); - } -} -exports.default = ProviderStream; +/* + * merge2 + * https://github.com/teambition/merge2 + * + * Copyright (c) 2014-2020 Teambition + * Licensed under the MIT license. + */ +const Stream = __webpack_require__("stream") +const PassThrough = Stream.PassThrough +const slice = Array.prototype.slice +module.exports = merge2 -/***/ }), +function merge2 () { + const streamsQueue = [] + const args = slice.call(arguments) + let merging = false + let options = args[args.length - 1] -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/sync.js": -/***/ (function(module, exports, __webpack_require__) { + if (options && !Array.isArray(options) && options.pipe == null) { + args.pop() + } else { + options = {} + } -"use strict"; + const doEnd = options.end !== false + const doPipeError = options.pipeError === true + if (options.objectMode == null) { + options.objectMode = true + } + if (options.highWaterMark == null) { + options.highWaterMark = 64 * 1024 + } + const mergedStream = PassThrough(options) -Object.defineProperty(exports, "__esModule", { value: true }); -const sync_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/sync.js"); -const provider_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/providers/provider.js"); -class ProviderSync extends provider_1.default { - constructor() { - super(...arguments); - this._reader = new sync_1.default(this._settings); + function addStream () { + for (let i = 0, len = arguments.length; i < len; i++) { + streamsQueue.push(pauseStreams(arguments[i], options)) } - read(task) { - const root = this._getRootDirectory(task); - const options = this._getReaderOptions(task); - const entries = this.api(root, task, options); - return entries.map(options.transform); + mergeStream() + return this + } + + function mergeStream () { + if (merging) { + return } - api(root, task, options) { - if (task.dynamic) { - return this._reader.dynamic(root, options); - } - return this._reader.static(task.patterns, options); + merging = true + + let streams = streamsQueue.shift() + if (!streams) { + process.nextTick(endStream) + return + } + if (!Array.isArray(streams)) { + streams = [streams] } -} -exports.default = ProviderSync; + let pipesCount = streams.length + 1 -/***/ }), + function next () { + if (--pipesCount > 0) { + return + } + merging = false + mergeStream() + } -/***/ "../../node_modules/globby/node_modules/fast-glob/out/providers/transformers/entry.js": -/***/ (function(module, exports, __webpack_require__) { + function pipe (stream) { + function onend () { + stream.removeListener('merge2UnpipeEnd', onend) + stream.removeListener('end', onend) + if (doPipeError) { + stream.removeListener('error', onerror) + } + next() + } + function onerror (err) { + mergedStream.emit('error', err) + } + // skip ended stream + if (stream._readableState.endEmitted) { + return next() + } -"use strict"; + stream.on('merge2UnpipeEnd', onend) + stream.on('end', onend) -Object.defineProperty(exports, "__esModule", { value: true }); -const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); -class EntryTransformer { - constructor(_settings) { - this._settings = _settings; - } - getTransformer() { - return (entry) => this._transform(entry); + if (doPipeError) { + stream.on('error', onerror) + } + + stream.pipe(mergedStream, { end: false }) + // compatible for old stream + stream.resume() } - _transform(entry) { - let filepath = entry.path; - if (this._settings.absolute) { - filepath = utils.path.makeAbsolute(this._settings.cwd, filepath); - filepath = utils.path.unixify(filepath); - } - if (this._settings.markDirectories && entry.dirent.isDirectory()) { - filepath += '/'; - } - if (!this._settings.objectMode) { - return filepath; - } - return Object.assign(Object.assign({}, entry), { path: filepath }); + + for (let i = 0; i < streams.length; i++) { + pipe(streams[i]) } -} -exports.default = EntryTransformer; + next() + } -/***/ }), + function endStream () { + merging = false + // emit 'queueDrain' when all streams merged. + mergedStream.emit('queueDrain') + if (doEnd) { + mergedStream.end() + } + } -/***/ "../../node_modules/globby/node_modules/fast-glob/out/readers/reader.js": -/***/ (function(module, exports, __webpack_require__) { + mergedStream.setMaxListeners(0) + mergedStream.add = addStream + mergedStream.on('unpipe', function (stream) { + stream.emit('merge2UnpipeEnd') + }) -"use strict"; + if (args.length) { + addStream.apply(null, args) + } + return mergedStream +} -Object.defineProperty(exports, "__esModule", { value: true }); -const path = __webpack_require__("path"); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const utils = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/index.js"); -class Reader { - constructor(_settings) { - this._settings = _settings; - this._fsStatSettings = new fsStat.Settings({ - followSymbolicLink: this._settings.followSymbolicLinks, - fs: this._settings.fs, - throwErrorOnBrokenSymbolicLink: this._settings.followSymbolicLinks - }); - } - _getFullEntryPath(filepath) { - return path.resolve(this._settings.cwd, filepath); +// check and pause streams for pipe. +function pauseStreams (streams, options) { + if (!Array.isArray(streams)) { + // Backwards-compat with old-style streams + if (!streams._readableState && streams.pipe) { + streams = streams.pipe(PassThrough(options)) } - _makeEntry(stats, pattern) { - const entry = { - name: pattern, - path: pattern, - dirent: utils.fs.createDirentFromStats(pattern, stats) - }; - if (this._settings.stats) { - entry.stats = stats; - } - return entry; + if (!streams._readableState || !streams.pause || !streams.pipe) { + throw new Error('Only readable stream can be merged.') } - _isFatalError(error) { - return !utils.errno.isEnoentCodeError(error) && !this._settings.suppressErrors; + streams.pause() + } else { + for (let i = 0, len = streams.length; i < len; i++) { + streams[i] = pauseStreams(streams[i], options) } + } + return streams } -exports.default = Reader; /***/ }), -/***/ "../../node_modules/globby/node_modules/fast-glob/out/readers/stream.js": +/***/ "../../node_modules/mimic-fn/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const stream_1 = __webpack_require__("stream"); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const fsWalk = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/index.js"); -const reader_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/reader.js"); -class ReaderStream extends reader_1.default { - constructor() { - super(...arguments); - this._walkStream = fsWalk.walkStream; - this._stat = fsStat.stat; - } - dynamic(root, options) { - return this._walkStream(root, options); - } - static(patterns, options) { - const filepaths = patterns.map(this._getFullEntryPath, this); - const stream = new stream_1.PassThrough({ objectMode: true }); - stream._write = (index, _enc, done) => { - return this._getEntry(filepaths[index], patterns[index], options) - .then((entry) => { - if (entry !== null && options.entryFilter(entry)) { - stream.push(entry); - } - if (index === filepaths.length - 1) { - stream.end(); - } - done(); - }) - .catch(done); - }; - for (let i = 0; i < filepaths.length; i++) { - stream.write(i); - } - return stream; - } - _getEntry(filepath, pattern, options) { - return this._getStat(filepath) - .then((stats) => this._makeEntry(stats, pattern)) - .catch((error) => { - if (options.errorFilter(error)) { - return null; - } - throw error; - }); - } - _getStat(filepath) { - return new Promise((resolve, reject) => { - this._stat(filepath, this._fsStatSettings, (error, stats) => { - return error === null ? resolve(stats) : reject(error); - }); - }); - } -} -exports.default = ReaderStream; + +const mimicFn = (to, from) => { + for (const prop of Reflect.ownKeys(from)) { + Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop)); + } + + return to; +}; + +module.exports = mimicFn; +// TODO: Remove this for the next major release +module.exports.default = mimicFn; /***/ }), -/***/ "../../node_modules/globby/node_modules/fast-glob/out/readers/sync.js": +/***/ "../../node_modules/minimatch/minimatch.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; +module.exports = minimatch +minimatch.Minimatch = Minimatch -Object.defineProperty(exports, "__esModule", { value: true }); -const fsStat = __webpack_require__("../../node_modules/@nodelib/fs.stat/out/index.js"); -const fsWalk = __webpack_require__("../../node_modules/@nodelib/fs.walk/out/index.js"); -const reader_1 = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/readers/reader.js"); -class ReaderSync extends reader_1.default { - constructor() { - super(...arguments); - this._walkSync = fsWalk.walkSync; - this._statSync = fsStat.statSync; - } - dynamic(root, options) { - return this._walkSync(root, options); - } - static(patterns, options) { - const entries = []; - for (const pattern of patterns) { - const filepath = this._getFullEntryPath(pattern); - const entry = this._getEntry(filepath, pattern, options); - if (entry === null || !options.entryFilter(entry)) { - continue; - } - entries.push(entry); - } - return entries; - } - _getEntry(filepath, pattern, options) { - try { - const stats = this._getStat(filepath); - return this._makeEntry(stats, pattern); - } - catch (error) { - if (options.errorFilter(error)) { - return null; - } - throw error; - } - } - _getStat(filepath) { - return this._statSync(filepath, this._fsStatSettings); - } +var path = (function () { try { return __webpack_require__("path") } catch (e) {}}()) || { + sep: '/' } -exports.default = ReaderSync; +minimatch.sep = path.sep +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = __webpack_require__("../../node_modules/brace-expansion/index.js") -/***/ }), +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} -/***/ "../../node_modules/globby/node_modules/fast-glob/out/settings.js": -/***/ (function(module, exports, __webpack_require__) { +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' -"use strict"; +// * => any number of characters +var star = qmark + '*?' -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0; -const fs = __webpack_require__("fs"); -const os = __webpack_require__("os"); -/** - * The `os.cpus` method can return zero. We expect the number of cores to be greater than zero. - * https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107 - */ -const CPU_COUNT = Math.max(os.cpus().length, 1); -exports.DEFAULT_FILE_SYSTEM_ADAPTER = { - lstat: fs.lstat, - lstatSync: fs.lstatSync, - stat: fs.stat, - statSync: fs.statSync, - readdir: fs.readdir, - readdirSync: fs.readdirSync -}; -class Settings { - constructor(_options = {}) { - this._options = _options; - this.absolute = this._getValue(this._options.absolute, false); - this.baseNameMatch = this._getValue(this._options.baseNameMatch, false); - this.braceExpansion = this._getValue(this._options.braceExpansion, true); - this.caseSensitiveMatch = this._getValue(this._options.caseSensitiveMatch, true); - this.concurrency = this._getValue(this._options.concurrency, CPU_COUNT); - this.cwd = this._getValue(this._options.cwd, process.cwd()); - this.deep = this._getValue(this._options.deep, Infinity); - this.dot = this._getValue(this._options.dot, false); - this.extglob = this._getValue(this._options.extglob, true); - this.followSymbolicLinks = this._getValue(this._options.followSymbolicLinks, true); - this.fs = this._getFileSystemMethods(this._options.fs); - this.globstar = this._getValue(this._options.globstar, true); - this.ignore = this._getValue(this._options.ignore, []); - this.markDirectories = this._getValue(this._options.markDirectories, false); - this.objectMode = this._getValue(this._options.objectMode, false); - this.onlyDirectories = this._getValue(this._options.onlyDirectories, false); - this.onlyFiles = this._getValue(this._options.onlyFiles, true); - this.stats = this._getValue(this._options.stats, false); - this.suppressErrors = this._getValue(this._options.suppressErrors, false); - this.throwErrorOnBrokenSymbolicLink = this._getValue(this._options.throwErrorOnBrokenSymbolicLink, false); - this.unique = this._getValue(this._options.unique, true); - if (this.onlyDirectories) { - this.onlyFiles = false; - } - if (this.stats) { - this.objectMode = true; - } - } - _getValue(option, value) { - return option === undefined ? value : option; - } - _getFileSystemMethods(methods = {}) { - return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods); - } -} -exports.default = Settings; +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' -/***/ }), +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') -/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/array.js": -/***/ (function(module, exports, __webpack_require__) { +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} -"use strict"; +// normalizes slashes. +var slashSplit = /\/+/ -Object.defineProperty(exports, "__esModule", { value: true }); -exports.splitWhen = exports.flatten = void 0; -function flatten(items) { - return items.reduce((collection, item) => [].concat(collection, item), []); +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } } -exports.flatten = flatten; -function splitWhen(items, predicate) { - const result = [[]]; - let groupIndex = 0; - for (const item of items) { - if (predicate(item)) { - groupIndex++; - result[groupIndex] = []; - } - else { - result[groupIndex].push(item); - } - } - return result; + +function ext (a, b) { + b = b || {} + var t = {} + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + return t } -exports.splitWhen = splitWhen; +minimatch.defaults = function (def) { + if (!def || typeof def !== 'object' || !Object.keys(def).length) { + return minimatch + } -/***/ }), + var orig = minimatch -/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/errno.js": -/***/ (function(module, exports, __webpack_require__) { + var m = function minimatch (p, pattern, options) { + return orig(p, pattern, ext(def, options)) + } -"use strict"; + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + m.Minimatch.defaults = function defaults (options) { + return orig.defaults(ext(def, options)).Minimatch + } -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isEnoentCodeError = void 0; -function isEnoentCodeError(error) { - return error.code === 'ENOENT'; -} -exports.isEnoentCodeError = isEnoentCodeError; + m.filter = function filter (pattern, options) { + return orig.filter(pattern, ext(def, options)) + } + m.defaults = function defaults (options) { + return orig.defaults(ext(def, options)) + } -/***/ }), + m.makeRe = function makeRe (pattern, options) { + return orig.makeRe(pattern, ext(def, options)) + } -/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/fs.js": -/***/ (function(module, exports, __webpack_require__) { + m.braceExpand = function braceExpand (pattern, options) { + return orig.braceExpand(pattern, ext(def, options)) + } -"use strict"; + m.match = function (list, pattern, options) { + return orig.match(list, pattern, ext(def, options)) + } -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createDirentFromStats = void 0; -class DirentFromStats { - constructor(name, stats) { - this.name = name; - this.isBlockDevice = stats.isBlockDevice.bind(stats); - this.isCharacterDevice = stats.isCharacterDevice.bind(stats); - this.isDirectory = stats.isDirectory.bind(stats); - this.isFIFO = stats.isFIFO.bind(stats); - this.isFile = stats.isFile.bind(stats); - this.isSocket = stats.isSocket.bind(stats); - this.isSymbolicLink = stats.isSymbolicLink.bind(stats); - } + return m } -function createDirentFromStats(name, stats) { - return new DirentFromStats(name, stats); + +Minimatch.defaults = function (def) { + return minimatch.defaults(def).Minimatch } -exports.createDirentFromStats = createDirentFromStats; +function minimatch (p, pattern, options) { + assertValidPattern(pattern) -/***/ }), + if (!options) options = {} -/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/index.js": -/***/ (function(module, exports, __webpack_require__) { + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } -"use strict"; + return new Minimatch(pattern, options).match(p) +} -Object.defineProperty(exports, "__esModule", { value: true }); -exports.string = exports.stream = exports.pattern = exports.path = exports.fs = exports.errno = exports.array = void 0; -const array = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/array.js"); -exports.array = array; -const errno = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/errno.js"); -exports.errno = errno; -const fs = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/fs.js"); -exports.fs = fs; -const path = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/path.js"); -exports.path = path; -const pattern = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/pattern.js"); -exports.pattern = pattern; -const stream = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/stream.js"); -exports.stream = stream; -const string = __webpack_require__("../../node_modules/globby/node_modules/fast-glob/out/utils/string.js"); -exports.string = string; +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + assertValidPattern(pattern) -/***/ }), + if (!options) options = {} -/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/path.js": -/***/ (function(module, exports, __webpack_require__) { + pattern = pattern.trim() -"use strict"; + // windows support: need to use /, not \ + if (!options.allowWindowsEscape && path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } -Object.defineProperty(exports, "__esModule", { value: true }); -exports.removeLeadingDotSegment = exports.escape = exports.makeAbsolute = exports.unixify = void 0; -const path = __webpack_require__("path"); -const LEADING_DOT_SEGMENT_CHARACTERS_COUNT = 2; // ./ or .\\ -const UNESCAPED_GLOB_SYMBOLS_RE = /(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g; -/** - * Designed to work only with simple paths: `dir\\file`. - */ -function unixify(filepath) { - return filepath.replace(/\\/g, '/'); -} -exports.unixify = unixify; -function makeAbsolute(cwd, filepath) { - return path.resolve(cwd, filepath); -} -exports.makeAbsolute = makeAbsolute; -function escape(pattern) { - return pattern.replace(UNESCAPED_GLOB_SYMBOLS_RE, '\\$2'); -} -exports.escape = escape; -function removeLeadingDotSegment(entry) { - // We do not use `startsWith` because this is 10x slower than current implementation for some cases. - // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with - if (entry.charAt(0) === '.') { - const secondCharactery = entry.charAt(1); - if (secondCharactery === '/' || secondCharactery === '\\') { - return entry.slice(LEADING_DOT_SEGMENT_CHARACTERS_COUNT); - } - } - return entry; + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + this.partial = !!options.partial + + // make the set of regexps etc. + this.make() } -exports.removeLeadingDotSegment = removeLeadingDotSegment; +Minimatch.prototype.debug = function () {} -/***/ }), +Minimatch.prototype.make = make +function make () { + var pattern = this.pattern + var options = this.options -/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/pattern.js": -/***/ (function(module, exports, __webpack_require__) { + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } -"use strict"; - -Object.defineProperty(exports, "__esModule", { value: true }); -exports.matchAny = exports.convertPatternsToRe = exports.makeRe = exports.getPatternParts = exports.expandBraceExpansion = exports.expandPatternsWithBraceExpansion = exports.isAffectDepthOfReadingPattern = exports.endsWithSlashGlobStar = exports.hasGlobStar = exports.getBaseDirectory = exports.isPatternRelatedToParentDirectory = exports.getPatternsOutsideCurrentDirectory = exports.getPatternsInsideCurrentDirectory = exports.getPositivePatterns = exports.getNegativePatterns = exports.isPositivePattern = exports.isNegativePattern = exports.convertToNegativePattern = exports.convertToPositivePattern = exports.isDynamicPattern = exports.isStaticPattern = void 0; -const path = __webpack_require__("path"); -const globParent = __webpack_require__("../../node_modules/glob-parent/index.js"); -const micromatch = __webpack_require__("../../node_modules/globby/node_modules/micromatch/index.js"); -const GLOBSTAR = '**'; -const ESCAPE_SYMBOL = '\\'; -const COMMON_GLOB_SYMBOLS_RE = /[*?]|^!/; -const REGEX_CHARACTER_CLASS_SYMBOLS_RE = /\[.*]/; -const REGEX_GROUP_SYMBOLS_RE = /(?:^|[^!*+?@])\(.*\|.*\)/; -const GLOB_EXTENSION_SYMBOLS_RE = /[!*+?@]\(.*\)/; -const BRACE_EXPANSIONS_SYMBOLS_RE = /{.*(?:,|\.\.).*}/; -function isStaticPattern(pattern, options = {}) { - return !isDynamicPattern(pattern, options); -} -exports.isStaticPattern = isStaticPattern; -function isDynamicPattern(pattern, options = {}) { - /** - * A special case with an empty string is necessary for matching patterns that start with a forward slash. - * An empty string cannot be a dynamic pattern. - * For example, the pattern `/lib/*` will be spread into parts: '', 'lib', '*'. - */ - if (pattern === '') { - return false; - } - /** - * When the `caseSensitiveMatch` option is disabled, all patterns must be marked as dynamic, because we cannot check - * filepath directly (without read directory). - */ - if (options.caseSensitiveMatch === false || pattern.includes(ESCAPE_SYMBOL)) { - return true; - } - if (COMMON_GLOB_SYMBOLS_RE.test(pattern) || REGEX_CHARACTER_CLASS_SYMBOLS_RE.test(pattern) || REGEX_GROUP_SYMBOLS_RE.test(pattern)) { - return true; - } - if (options.extglob !== false && GLOB_EXTENSION_SYMBOLS_RE.test(pattern)) { - return true; - } - if (options.braceExpansion !== false && BRACE_EXPANSIONS_SYMBOLS_RE.test(pattern)) { - return true; - } - return false; -} -exports.isDynamicPattern = isDynamicPattern; -function convertToPositivePattern(pattern) { - return isNegativePattern(pattern) ? pattern.slice(1) : pattern; -} -exports.convertToPositivePattern = convertToPositivePattern; -function convertToNegativePattern(pattern) { - return '!' + pattern; -} -exports.convertToNegativePattern = convertToNegativePattern; -function isNegativePattern(pattern) { - return pattern.startsWith('!') && pattern[1] !== '('; -} -exports.isNegativePattern = isNegativePattern; -function isPositivePattern(pattern) { - return !isNegativePattern(pattern); -} -exports.isPositivePattern = isPositivePattern; -function getNegativePatterns(patterns) { - return patterns.filter(isNegativePattern); -} -exports.getNegativePatterns = getNegativePatterns; -function getPositivePatterns(patterns) { - return patterns.filter(isPositivePattern); -} -exports.getPositivePatterns = getPositivePatterns; -/** - * Returns patterns that can be applied inside the current directory. - * - * @example - * // ['./*', '*', 'a/*'] - * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) - */ -function getPatternsInsideCurrentDirectory(patterns) { - return patterns.filter((pattern) => !isPatternRelatedToParentDirectory(pattern)); -} -exports.getPatternsInsideCurrentDirectory = getPatternsInsideCurrentDirectory; -/** - * Returns patterns to be expanded relative to (outside) the current directory. - * - * @example - * // ['../*', './../*'] - * getPatternsInsideCurrentDirectory(['./*', '*', 'a/*', '../*', './../*']) - */ -function getPatternsOutsideCurrentDirectory(patterns) { - return patterns.filter(isPatternRelatedToParentDirectory); -} -exports.getPatternsOutsideCurrentDirectory = getPatternsOutsideCurrentDirectory; -function isPatternRelatedToParentDirectory(pattern) { - return pattern.startsWith('..') || pattern.startsWith('./..'); -} -exports.isPatternRelatedToParentDirectory = isPatternRelatedToParentDirectory; -function getBaseDirectory(pattern) { - return globParent(pattern, { flipBackslashes: false }); -} -exports.getBaseDirectory = getBaseDirectory; -function hasGlobStar(pattern) { - return pattern.includes(GLOBSTAR); -} -exports.hasGlobStar = hasGlobStar; -function endsWithSlashGlobStar(pattern) { - return pattern.endsWith('/' + GLOBSTAR); -} -exports.endsWithSlashGlobStar = endsWithSlashGlobStar; -function isAffectDepthOfReadingPattern(pattern) { - const basename = path.basename(pattern); - return endsWithSlashGlobStar(pattern) || isStaticPattern(basename); -} -exports.isAffectDepthOfReadingPattern = isAffectDepthOfReadingPattern; -function expandPatternsWithBraceExpansion(patterns) { - return patterns.reduce((collection, pattern) => { - return collection.concat(expandBraceExpansion(pattern)); - }, []); -} -exports.expandPatternsWithBraceExpansion = expandPatternsWithBraceExpansion; -function expandBraceExpansion(pattern) { - return micromatch.braces(pattern, { - expand: true, - nodupes: true - }); -} -exports.expandBraceExpansion = expandBraceExpansion; -function getPatternParts(pattern, options) { - let { parts } = micromatch.scan(pattern, Object.assign(Object.assign({}, options), { parts: true })); - /** - * The scan method returns an empty array in some cases. - * See micromatch/picomatch#58 for more details. - */ - if (parts.length === 0) { - parts = [pattern]; - } - /** - * The scan method does not return an empty part for the pattern with a forward slash. - * This is another part of micromatch/picomatch#58. - */ - if (parts[0].startsWith('/')) { - parts[0] = parts[0].slice(1); - parts.unshift(''); - } - return parts; -} -exports.getPatternParts = getPatternParts; -function makeRe(pattern, options) { - return micromatch.makeRe(pattern, options); -} -exports.makeRe = makeRe; -function convertPatternsToRe(patterns, options) { - return patterns.map((pattern) => makeRe(pattern, options)); -} -exports.convertPatternsToRe = convertPatternsToRe; -function matchAny(entry, patternsRe) { - return patternsRe.some((patternRe) => patternRe.test(entry)); -} -exports.matchAny = matchAny; + // step 1: figure out negation, etc. + this.parseNegate() + // step 2: expand braces + var set = this.globSet = this.braceExpand() -/***/ }), + if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } -/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/stream.js": -/***/ (function(module, exports, __webpack_require__) { + this.debug(this.pattern, set) -"use strict"; + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) -Object.defineProperty(exports, "__esModule", { value: true }); -exports.merge = void 0; -const merge2 = __webpack_require__("../../node_modules/merge2/index.js"); -function merge(streams) { - const mergedStream = merge2(streams); - streams.forEach((stream) => { - stream.once('error', (error) => mergedStream.emit('error', error)); - }); - mergedStream.once('close', () => propagateCloseEventToSources(streams)); - mergedStream.once('end', () => propagateCloseEventToSources(streams)); - return mergedStream; -} -exports.merge = merge; -function propagateCloseEventToSources(streams) { - streams.forEach((stream) => stream.emit('close')); -} + this.debug(this.pattern, set) + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) -/***/ }), + this.debug(this.pattern, set) -/***/ "../../node_modules/globby/node_modules/fast-glob/out/utils/string.js": -/***/ (function(module, exports, __webpack_require__) { + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) -"use strict"; + this.debug(this.pattern, set) -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isEmpty = exports.isString = void 0; -function isString(input) { - return typeof input === 'string'; + this.set = set } -exports.isString = isString; -function isEmpty(input) { - return input === ''; + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate } -exports.isEmpty = isEmpty; +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} -/***/ }), +Minimatch.prototype.braceExpand = braceExpand -/***/ "../../node_modules/globby/node_modules/micromatch/index.js": -/***/ (function(module, exports, __webpack_require__) { +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } -"use strict"; + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + assertValidPattern(pattern) -const util = __webpack_require__("util"); -const braces = __webpack_require__("../../node_modules/braces/index.js"); -const picomatch = __webpack_require__("../../node_modules/picomatch/index.js"); -const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); -const isEmptyString = val => val === '' || val === './'; + // Thanks to Yeting Li for + // improving this regexp to avoid a ReDOS vulnerability. + if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { + // shortcut. no need to expand. + return [pattern] + } -/** - * Returns an array of strings that match one or more glob patterns. - * - * ```js - * const mm = require('micromatch'); - * // mm(list, patterns[, options]); - * - * console.log(mm(['a.js', 'a.txt'], ['*.js'])); - * //=> [ 'a.js' ] - * ``` - * @param {String|Array} `list` List of strings to match. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) - * @return {Array} Returns an array of matches - * @summary false - * @api public - */ + return expand(pattern) +} -const micromatch = (list, patterns, options) => { - patterns = [].concat(patterns); - list = [].concat(list); +var MAX_PATTERN_LENGTH = 1024 * 64 +var assertValidPattern = function (pattern) { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern') + } - let omit = new Set(); - let keep = new Set(); - let items = new Set(); - let negatives = 0; + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long') + } +} - let onResult = state => { - items.add(state.output); - if (options && options.onResult) { - options.onResult(state); - } - }; +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + assertValidPattern(pattern) - for (let i = 0; i < patterns.length; i++) { - let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true); - let negated = isMatch.state.negated || isMatch.state.negatedExtglob; - if (negated) negatives++; + var options = this.options - for (let item of list) { - let matched = isMatch(item, true); + // shortcuts + if (pattern === '**') { + if (!options.noglobstar) + return GLOBSTAR + else + pattern = '*' + } + if (pattern === '') return '' - let match = negated ? !matched.isMatch : matched.isMatch; - if (!match) continue; + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this - if (negated) { - omit.add(matched.output); - } else { - omit.delete(matched.output); - keep.add(matched.output); + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false } } - let result = negatives === patterns.length ? [...items] : [...keep]; - let matches = result.filter(item => !omit.has(item)); - - if (options && matches.length === 0) { - if (options.failglob === true) { - throw new Error(`No matches found for "${patterns.join(', ')}"`); - } + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) - if (options.nonull === true || options.nullglob === true) { - return options.unescape ? patterns.map(p => p.replace(/\\/g, '')) : patterns; + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue } - } - return matches; -}; + switch (c) { + /* istanbul ignore next */ + case '/': { + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + } -/** - * Backwards compatibility - */ + case '\\': + clearStateChar() + escaping = true + continue -micromatch.match = micromatch; + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) -/** - * Returns a matcher function from the given glob `pattern` and `options`. - * The returned function takes a string to match as its only argument and returns - * true if the string is a match. - * - * ```js - * const mm = require('micromatch'); - * // mm.matcher(pattern[, options]); - * - * const isMatch = mm.matcher('*.!(*a)'); - * console.log(isMatch('a.a')); //=> false - * console.log(isMatch('a.b')); //=> true - * ``` - * @param {String} `pattern` Glob pattern - * @param {Object} `options` - * @return {Function} Returns a matcher function. - * @api public - */ + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } -micromatch.matcher = (pattern, options) => picomatch(pattern, options); + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue -/** - * Returns true if **any** of the given glob `patterns` match the specified `string`. - * - * ```js - * const mm = require('micromatch'); - * // mm.isMatch(string, patterns[, options]); - * - * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true - * console.log(mm.isMatch('a.a', 'b.*')); //=> false - * ``` - * @param {String} `str` The string to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `[options]` See available [options](#options). - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ + case '(': + if (inClass) { + re += '(' + continue + } -micromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + if (!stateChar) { + re += '\\(' + continue + } -/** - * Backwards compatibility - */ + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue -micromatch.any = micromatch.isMatch; + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } -/** - * Returns a list of strings that _**do not match any**_ of the given `patterns`. - * - * ```js - * const mm = require('micromatch'); - * // mm.not(list, patterns[, options]); - * - * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); - * //=> ['b.b', 'c.c'] - * ``` - * @param {Array} `list` Array of strings to match. - * @param {String|Array} `patterns` One or more glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array} Returns an array of strings that **do not match** the given patterns. - * @api public - */ - -micromatch.not = (list, patterns, options = {}) => { - patterns = [].concat(patterns).map(String); - let result = new Set(); - let items = []; - - let onResult = state => { - if (options.onResult) options.onResult(state); - items.push(state.output); - }; + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue - let matches = micromatch(list, patterns, { ...options, onResult }); + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } - for (let item of items) { - if (!matches.includes(item)) { - result.add(item); - } - } - return [...result]; -}; + clearStateChar() + re += '|' + continue -/** - * Returns true if the given `string` contains the given pattern. Similar - * to [.isMatch](#isMatch) but the pattern can match any part of the string. - * - * ```js - * var mm = require('micromatch'); - * // mm.contains(string, pattern[, options]); - * - * console.log(mm.contains('aa/bb/cc', '*b')); - * //=> true - * console.log(mm.contains('aa/bb/cc', '*d')); - * //=> false - * ``` - * @param {String} `str` The string to match. - * @param {String|Array} `patterns` Glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any of the patterns matches any part of `str`. - * @api public - */ + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() -micromatch.contains = (str, pattern, options) => { - if (typeof str !== 'string') { - throw new TypeError(`Expected a string: "${util.inspect(str)}"`); - } + if (inClass) { + re += '\\' + c + continue + } - if (Array.isArray(pattern)) { - return pattern.some(p => micromatch.contains(str, p, options)); - } + inClass = true + classStart = i + reClassStart = re.length + re += c + continue - if (typeof pattern === 'string') { - if (isEmptyString(str) || isEmptyString(pattern)) { - return false; - } + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } - if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) { - return true; - } - } + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } - return micromatch.isMatch(str, pattern, { ...options, contains: true }); -}; + // finish up the class. + hasMagic = true + inClass = false + re += c + continue -/** - * Filter the keys of the given object with the given `glob` pattern - * and `options`. Does not attempt to match nested keys. If you need this feature, - * use [glob-object][] instead. - * - * ```js - * const mm = require('micromatch'); - * // mm.matchKeys(object, patterns[, options]); - * - * const obj = { aa: 'a', ab: 'b', ac: 'c' }; - * console.log(mm.matchKeys(obj, '*b')); - * //=> { ab: 'b' } - * ``` - * @param {Object} `object` The object with keys to filter. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Object} Returns an object with only keys that match the given patterns. - * @api public - */ + default: + // swallow any state char that wasn't consumed + clearStateChar() -micromatch.matchKeys = (obj, patterns, options) => { - if (!utils.isObject(obj)) { - throw new TypeError('Expected the first argument to be an object'); - } - let keys = micromatch(Object.keys(obj), patterns, options); - let res = {}; - for (let key of keys) res[key] = obj[key]; - return res; -}; + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } -/** - * Returns true if some of the strings in the given `list` match any of the given glob `patterns`. - * - * ```js - * const mm = require('micromatch'); - * // mm.some(list, patterns[, options]); - * - * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); - * // true - * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); - * // false - * ``` - * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list` - * @api public - */ + re += c -micromatch.some = (list, patterns, options) => { - let items = [].concat(list); + } // switch + } // for - for (let pattern of [].concat(patterns)) { - let isMatch = picomatch(String(pattern), options); - if (items.some(item => isMatch(item))) { - return true; - } + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] } - return false; -}; - -/** - * Returns true if every string in the given `list` matches - * any of the given glob `patterns`. - * - * ```js - * const mm = require('micromatch'); - * // mm.every(list, patterns[, options]); - * - * console.log(mm.every('foo.js', ['foo.js'])); - * // true - * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); - * // true - * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); - * // false - * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); - * // false - * ``` - * @param {String|Array} `list` The string or array of strings to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list` - * @api public - */ -micromatch.every = (list, patterns, options) => { - let items = [].concat(list); + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } - for (let pattern of [].concat(patterns)) { - let isMatch = picomatch(String(pattern), options); - if (!items.every(item => isMatch(item))) { - return false; - } - } - return true; -}; + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) -/** - * Returns true if **all** of the given `patterns` match - * the specified string. - * - * ```js - * const mm = require('micromatch'); - * // mm.all(string, patterns[, options]); - * - * console.log(mm.all('foo.js', ['foo.js'])); - * // true - * - * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); - * // false - * - * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); - * // true - * - * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); - * // true - * ``` - * @param {String|Array} `str` The string to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type -micromatch.all = (str, patterns, options) => { - if (typeof str !== 'string') { - throw new TypeError(`Expected a string: "${util.inspect(str)}"`); + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail } - return [].concat(patterns).every(p => picomatch(p, options)(str)); -}; - -/** - * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. - * - * ```js - * const mm = require('micromatch'); - * // mm.capture(pattern, string[, options]); - * - * console.log(mm.capture('test/*.js', 'test/foo.js')); - * //=> ['foo'] - * console.log(mm.capture('test/*.js', 'foo/bar.css')); - * //=> null - * ``` - * @param {String} `glob` Glob pattern to use for matching. - * @param {String} `input` String to match - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`. - * @api public - */ - -micromatch.capture = (glob, input, options) => { - let posix = utils.isWindows(options); - let regex = picomatch.makeRe(String(glob), { ...options, capture: true }); - let match = regex.exec(posix ? utils.toPosixSlashes(input) : input); - - if (match) { - return match.slice(1).map(v => v === void 0 ? '' : v); + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' } -}; -/** - * Create a regular expression from the given glob `pattern`. - * - * ```js - * const mm = require('micromatch'); - * // mm.makeRe(pattern[, options]); - * - * console.log(mm.makeRe('*.js')); - * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ - * ``` - * @param {String} `pattern` A glob pattern to convert to regex. - * @param {Object} `options` - * @return {RegExp} Returns a regex created from the given pattern. - * @api public - */ + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '[': case '.': case '(': addPatternStart = true + } -micromatch.makeRe = (...args) => picomatch.makeRe(...args); + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] -/** - * Scan a glob pattern to separate the pattern into segments. Used - * by the [split](#split) method. - * - * ```js - * const mm = require('micromatch'); - * const state = mm.scan(pattern[, options]); - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {Object} Returns an object with - * @api public - */ + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) -micromatch.scan = (...args) => picomatch.scan(...args); + nlLast += nlAfter -/** - * Parse a glob pattern to create the source string for a regular - * expression. - * - * ```js - * const mm = require('micromatch'); - * const state = mm(pattern[, options]); - * ``` - * @param {String} `glob` - * @param {Object} `options` - * @return {Object} Returns an object with useful properties and output to be used as regex source string. - * @api public - */ + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter -micromatch.parse = (patterns, options) => { - let res = []; - for (let pattern of [].concat(patterns || [])) { - for (let str of braces(String(pattern), options)) { - res.push(picomatch.parse(str, options)); + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe } - return res; -}; -/** - * Process the given brace `pattern`. - * - * ```js - * const { braces } = require('micromatch'); - * console.log(braces('foo/{a,b,c}/bar')); - * //=> [ 'foo/(a|b|c)/bar' ] - * - * console.log(braces('foo/{a,b,c}/bar', { expand: true })); - * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ] - * ``` - * @param {String} `pattern` String with brace pattern to process. - * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. - * @return {Array} - * @api public - */ + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } -micromatch.braces = (pattern, options) => { - if (typeof pattern !== 'string') throw new TypeError('Expected a string'); - if ((options && options.nobrace === true) || !/\{.*\}/.test(pattern)) { - return [pattern]; + if (addPatternStart) { + re = patternStart + re } - return braces(pattern, options); -}; -/** - * Expand braces - */ + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } -micromatch.braceExpand = (pattern, options) => { - if (typeof pattern !== 'string') throw new TypeError('Expected a string'); - return micromatch.braces(pattern, { ...options, expand: true }); -}; + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } -/** - * Expose micromatch - */ + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) /* istanbul ignore next - should be impossible */ { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } -module.exports = micromatch; + regExp._glob = pattern + regExp._src = re + return regExp +} -/***/ }), +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} -/***/ "../../node_modules/globby/stream-utils.js": -/***/ (function(module, exports, __webpack_require__) { +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp -"use strict"; + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set -const {Transform} = __webpack_require__("stream"); + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options -class ObjectTransform extends Transform { - constructor() { - super({ - objectMode: true - }); - } -} - -class FilterStream extends ObjectTransform { - constructor(filter) { - super(); - this._filter = filter; - } - - _transform(data, encoding, callback) { - if (this._filter(data)) { - this.push(data); - } + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' - callback(); - } -} + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') -class UniqueStream extends ObjectTransform { - constructor() { - super(); - this._pushed = new Set(); - } + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' - _transform(data, encoding, callback) { - if (!this._pushed.has(data)) { - this.push(data); - this._pushed.add(data); - } + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' - callback(); - } + try { + this.regexp = new RegExp(re, flags) + } catch (ex) /* istanbul ignore next - should be impossible */ { + this.regexp = false + } + return this.regexp } -module.exports = { - FilterStream, - UniqueStream -}; +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} +Minimatch.prototype.match = function match (f, partial) { + if (typeof partial === 'undefined') partial = this.partial + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' -/***/ }), + if (f === '/' && partial) return true -/***/ "../../node_modules/graceful-fs/clone.js": -/***/ (function(module, exports, __webpack_require__) { + var options = this.options -"use strict"; + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) -module.exports = clone + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. -function clone (obj) { - if (obj === null || typeof obj !== 'object') - return obj + var set = this.set + this.debug(this.pattern, 'set', set) - if (obj instanceof Object) - var copy = { __proto__: obj.__proto__ } - else - var copy = Object.create(null) + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } - Object.getOwnPropertyNames(obj).forEach(function (key) { - Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) - }) + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } - return copy + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate } +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options -/***/ }), + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) -/***/ "../../node_modules/graceful-fs/graceful-fs.js": -/***/ (function(module, exports, __webpack_require__) { + this.debug('matchOne', file.length, pattern.length) -var fs = __webpack_require__("fs") -var polyfills = __webpack_require__("../../node_modules/graceful-fs/polyfills.js") -var legacy = __webpack_require__("../../node_modules/graceful-fs/legacy-streams.js") -var clone = __webpack_require__("../../node_modules/graceful-fs/clone.js") + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] -var util = __webpack_require__("util") + this.debug(pattern, p, f) -/* istanbul ignore next - node 0.x polyfill */ -var gracefulQueue -var previousSymbol + // should be impossible. + // some invalid regexp stuff in the set. + /* istanbul ignore if */ + if (p === false) return false -/* istanbul ignore else - node 0.x polyfill */ -if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { - gracefulQueue = Symbol.for('graceful-fs.queue') - // This is used in testing by future versions - previousSymbol = Symbol.for('graceful-fs.previous') -} else { - gracefulQueue = '___graceful-fs.queue' - previousSymbol = '___graceful-fs.previous' -} + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) -function noop () {} + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } -function publishQueue(context, queue) { - Object.defineProperty(context, gracefulQueue, { - get: function() { - return queue - } - }) -} + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs4') -else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') - console.error(m) - } + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) -// Once time initialization -if (!fs[gracefulQueue]) { - // This queue can be shared by multiple loaded instances - var queue = global[gracefulQueue] || [] - publishQueue(fs, queue) + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } - // Patch fs.close/closeSync to shared queue version, because we need - // to retry() whenever a close happens *anywhere* in the program. - // This is essential when multiple graceful-fs instances are - // in play at the same time. - fs.close = (function (fs$close) { - function close (fd, cb) { - return fs$close.call(fs, fd, function (err) { - // This function uses the graceful-fs shared queue - if (!err) { - retry() + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ } + } - if (typeof cb === 'function') - cb.apply(this, arguments) - }) + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + /* istanbul ignore if */ + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false } - Object.defineProperty(close, previousSymbol, { - value: fs$close - }) - return close - })(fs.close) - - fs.closeSync = (function (fs$closeSync) { - function closeSync (fd) { - // This function uses the graceful-fs shared queue - fs$closeSync.apply(fs, arguments) - retry() + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + hit = f === p + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) } - Object.defineProperty(closeSync, previousSymbol, { - value: fs$closeSync - }) - return closeSync - })(fs.closeSync) + if (!hit) return false + } - if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug(fs[gracefulQueue]) - __webpack_require__("assert").equal(fs[gracefulQueue].length, 0) - }) + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else /* istanbul ignore else */ if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + return (fi === fl - 1) && (file[fi] === '') } -} -if (!global[gracefulQueue]) { - publishQueue(global, fs[gracefulQueue]); + // should be unreachable. + /* istanbul ignore next */ + throw new Error('wtf?') } -module.exports = patch(clone(fs)) -if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { - module.exports = patch(fs) - fs.__patched = true; +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') } -function patch (fs) { - // Everything that references the open() function needs to be in here - polyfills(fs) - fs.gracefulify = patch +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} - fs.createReadStream = createReadStream - fs.createWriteStream = createWriteStream - var fs$readFile = fs.readFile - fs.readFile = readFile - function readFile (path, options, cb) { - if (typeof options === 'function') - cb = options, options = null - return go$readFile(path, options, cb) +/***/ }), - function go$readFile (path, options, cb) { - return fs$readFile(path, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$readFile, [path, options, cb]]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } - }) - } - } +/***/ "../../node_modules/minimist/index.js": +/***/ (function(module, exports) { - var fs$writeFile = fs.writeFile - fs.writeFile = writeFile - function writeFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null +module.exports = function (args, opts) { + if (!opts) opts = {}; + + var flags = { bools : {}, strings : {}, unknownFn: null }; - return go$writeFile(path, data, options, cb) + if (typeof opts['unknown'] === 'function') { + flags.unknownFn = opts['unknown']; + } - function go$writeFile (path, data, options, cb) { - return fs$writeFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$writeFile, [path, data, options, cb]]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } - }) + if (typeof opts['boolean'] === 'boolean' && opts['boolean']) { + flags.allBools = true; + } else { + [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); } - } + + var aliases = {}; + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat(aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); - var fs$appendFile = fs.appendFile - if (fs$appendFile) - fs.appendFile = appendFile - function appendFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + flags.strings[aliases[key]] = true; + } + }); - return go$appendFile(path, data, options, cb) + var defaults = opts['default'] || {}; + + var argv = { _ : [] }; + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + }); + + var notFlags = []; - function go$appendFile (path, data, options, cb) { - return fs$appendFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$appendFile, [path, data, options, cb]]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } - }) + if (args.indexOf('--') !== -1) { + notFlags = args.slice(args.indexOf('--')+1); + args = args.slice(0, args.indexOf('--')); } - } - var fs$readdir = fs.readdir - fs.readdir = readdir - function readdir (path, options, cb) { - var args = [path] - if (typeof options !== 'function') { - args.push(options) - } else { - cb = options + function argDefined(key, arg) { + return (flags.allBools && /^--[^=]+$/.test(arg)) || + flags.strings[key] || flags.bools[key] || aliases[key]; } - args.push(go$readdir$cb) - - return go$readdir(args) - - function go$readdir$cb (err, files) { - if (files && files.sort) - files.sort() - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$readdir, [args]]) + function setArg (key, val, arg) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg) === false) return; + } - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() - } + var value = !flags.strings[key] && isNumber(val) + ? Number(val) : val + ; + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), value); + }); } - } - - function go$readdir (args) { - return fs$readdir.apply(fs, args) - } - if (process.version.substr(0, 4) === 'v0.8') { - var legStreams = legacy(fs) - ReadStream = legStreams.ReadStream - WriteStream = legStreams.WriteStream - } + function setKey (obj, keys, value) { + var o = obj; + for (var i = 0; i < keys.length-1; i++) { + var key = keys[i]; + if (isConstructorOrProto(o, key)) return; + if (o[key] === undefined) o[key] = {}; + if (o[key] === Object.prototype || o[key] === Number.prototype + || o[key] === String.prototype) o[key] = {}; + if (o[key] === Array.prototype) o[key] = []; + o = o[key]; + } - var fs$ReadStream = fs.ReadStream - if (fs$ReadStream) { - ReadStream.prototype = Object.create(fs$ReadStream.prototype) - ReadStream.prototype.open = ReadStream$open - } - - var fs$WriteStream = fs.WriteStream - if (fs$WriteStream) { - WriteStream.prototype = Object.create(fs$WriteStream.prototype) - WriteStream.prototype.open = WriteStream$open - } - - Object.defineProperty(fs, 'ReadStream', { - get: function () { - return ReadStream - }, - set: function (val) { - ReadStream = val - }, - enumerable: true, - configurable: true - }) - Object.defineProperty(fs, 'WriteStream', { - get: function () { - return WriteStream - }, - set: function (val) { - WriteStream = val - }, - enumerable: true, - configurable: true - }) - - // legacy names - var FileReadStream = ReadStream - Object.defineProperty(fs, 'FileReadStream', { - get: function () { - return FileReadStream - }, - set: function (val) { - FileReadStream = val - }, - enumerable: true, - configurable: true - }) - var FileWriteStream = WriteStream - Object.defineProperty(fs, 'FileWriteStream', { - get: function () { - return FileWriteStream - }, - set: function (val) { - FileWriteStream = val - }, - enumerable: true, - configurable: true - }) - - function ReadStream (path, options) { - if (this instanceof ReadStream) - return fs$ReadStream.apply(this, arguments), this - else - return ReadStream.apply(Object.create(ReadStream.prototype), arguments) - } - - function ReadStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - if (that.autoClose) - that.destroy() - - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - that.read() - } - }) - } - - function WriteStream (path, options) { - if (this instanceof WriteStream) - return fs$WriteStream.apply(this, arguments), this - else - return WriteStream.apply(Object.create(WriteStream.prototype), arguments) - } - - function WriteStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - that.destroy() - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - } - }) - } - - function createReadStream (path, options) { - return new fs.ReadStream(path, options) - } - - function createWriteStream (path, options) { - return new fs.WriteStream(path, options) - } - - var fs$open = fs.open - fs.open = open - function open (path, flags, mode, cb) { - if (typeof mode === 'function') - cb = mode, mode = null - - return go$open(path, flags, mode, cb) + var key = keys[keys.length - 1]; + if (isConstructorOrProto(o, key)) return; + if (o === Object.prototype || o === Number.prototype + || o === String.prototype) o = {}; + if (o === Array.prototype) o = []; + if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') { + o[key] = value; + } + else if (Array.isArray(o[key])) { + o[key].push(value); + } + else { + o[key] = [ o[key], value ]; + } + } + + function aliasIsBoolean(key) { + return aliases[key].some(function (x) { + return flags.bools[x]; + }); + } - function go$open (path, flags, mode, cb) { - return fs$open(path, flags, mode, function (err, fd) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$open, [path, flags, mode, cb]]) + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + + if (/^--.+=/.test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + var key = m[1]; + var value = m[2]; + if (flags.bools[key]) { + value = value !== 'false'; + } + setArg(key, value, arg); + } + else if (/^--no-.+/.test(arg)) { + var key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false, arg); + } + else if (/^--.+/.test(arg)) { + var key = arg.match(/^--(.+)/)[1]; + var next = args[i + 1]; + if (next !== undefined && !/^-/.test(next) + && !flags.bools[key] + && !flags.allBools + && (aliases[key] ? !aliasIsBoolean(key) : true)) { + setArg(key, next, arg); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next === 'true', arg); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + else if (/^-[^-]+/.test(arg)) { + var letters = arg.slice(1,-1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + var next = arg.slice(j+2); + + if (next === '-') { + setArg(letters[j], next, arg) + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split('=')[1], arg); + broken = true; + break; + } + + if (/[A-Za-z]/.test(letters[j]) + && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j+1] && letters[j+1].match(/\W/)) { + setArg(letters[j], arg.slice(j+2), arg); + broken = true; + break; + } + else { + setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); + } + } + + var key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) + && !flags.bools[key] + && (aliases[key] ? !aliasIsBoolean(key) : true)) { + setArg(key, args[i+1], arg); + i++; + } + else if (args[i+1] && /^(true|false)$/.test(args[i+1])) { + setArg(key, args[i+1] === 'true', arg); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + } else { - if (typeof cb === 'function') - cb.apply(this, arguments) - retry() + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push( + flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) + ); + } + if (opts.stopEarly) { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } } - }) } - } + + Object.keys(defaults).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) { + setKey(argv, key.split('.'), defaults[key]); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), defaults[key]); + }); + } + }); + + if (opts['--']) { + argv['--'] = new Array(); + notFlags.forEach(function(key) { + argv['--'].push(key); + }); + } + else { + notFlags.forEach(function(key) { + argv._.push(key); + }); + } - return fs + return argv; +}; + +function hasKey (obj, keys) { + var o = obj; + keys.slice(0,-1).forEach(function (key) { + o = (o[key] || {}); + }); + + var key = keys[keys.length - 1]; + return key in o; } -function enqueue (elem) { - debug('ENQUEUE', elem[0].name, elem[1]) - fs[gracefulQueue].push(elem) +function isNumber (x) { + if (typeof x === 'number') return true; + if (/^0x[0-9a-f]+$/i.test(x)) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); } -function retry () { - var elem = fs[gracefulQueue].shift() - if (elem) { - debug('RETRY', elem[0].name, elem[1]) - elem[0].apply(null, elem[1]) - } + +function isConstructorOrProto (obj, key) { + return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__'; } /***/ }), -/***/ "../../node_modules/graceful-fs/legacy-streams.js": +/***/ "../../node_modules/multimatch/index.js": /***/ (function(module, exports, __webpack_require__) { -var Stream = __webpack_require__("stream").Stream - -module.exports = legacy - -function legacy (fs) { - return { - ReadStream: ReadStream, - WriteStream: WriteStream - } - - function ReadStream (path, options) { - if (!(this instanceof ReadStream)) return new ReadStream(path, options); - - Stream.call(this); - - var self = this; - - this.path = path; - this.fd = null; - this.readable = true; - this.paused = false; - - this.flags = 'r'; - this.mode = 438; /*=0666*/ - this.bufferSize = 64 * 1024; +"use strict"; - options = options || {}; +const minimatch = __webpack_require__("../../node_modules/minimatch/minimatch.js"); +const arrayUnion = __webpack_require__("../../node_modules/array-union/index.js"); +const arrayDiffer = __webpack_require__("../../node_modules/array-differ/index.js"); +const arrify = __webpack_require__("../../node_modules/arrify/index.js"); - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } +module.exports = (list, patterns, options = {}) => { + list = arrify(list); + patterns = arrify(patterns); - if (this.encoding) this.setEncoding(this.encoding); + if (list.length === 0 || patterns.length === 0) { + return []; + } - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.end === undefined) { - this.end = Infinity; - } else if ('number' !== typeof this.end) { - throw TypeError('end must be a Number'); - } + return patterns.reduce((result, pattern) => { + let process = arrayUnion; - if (this.start > this.end) { - throw new Error('start must be <= end'); - } + if (pattern[0] === '!') { + pattern = pattern.slice(1); + process = arrayDiffer; + } - this.pos = this.start; - } + return process(result, minimatch.match(list, pattern, options)); + }, []); +}; - if (this.fd !== null) { - process.nextTick(function() { - self._read(); - }); - return; - } - fs.open(this.path, this.flags, this.mode, function (err, fd) { - if (err) { - self.emit('error', err); - self.readable = false; - return; - } +/***/ }), - self.fd = fd; - self.emit('open', fd); - self._read(); - }) - } +/***/ "../../node_modules/mute-stream/mute.js": +/***/ (function(module, exports, __webpack_require__) { - function WriteStream (path, options) { - if (!(this instanceof WriteStream)) return new WriteStream(path, options); +var Stream = __webpack_require__("stream") - Stream.call(this); +module.exports = MuteStream - this.path = path; - this.fd = null; - this.writable = true; +// var out = new MuteStream(process.stdout) +// argument auto-pipes +function MuteStream (opts) { + Stream.apply(this) + opts = opts || {} + this.writable = this.readable = true + this.muted = false + this.on('pipe', this._onpipe) + this.replace = opts.replace - this.flags = 'w'; - this.encoding = 'binary'; - this.mode = 438; /*=0666*/ - this.bytesWritten = 0; + // For readline-type situations + // This much at the start of a line being redrawn after a ctrl char + // is seen (such as backspace) won't be redrawn as the replacement + this._prompt = opts.prompt || null + this._hadControl = false +} - options = options || {}; +MuteStream.prototype = Object.create(Stream.prototype) - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } +Object.defineProperty(MuteStream.prototype, 'constructor', { + value: MuteStream, + enumerable: false +}) - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.start < 0) { - throw new Error('start must be >= zero'); - } +MuteStream.prototype.mute = function () { + this.muted = true +} - this.pos = this.start; - } +MuteStream.prototype.unmute = function () { + this.muted = false +} - this.busy = false; - this._queue = []; +Object.defineProperty(MuteStream.prototype, '_onpipe', { + value: onPipe, + enumerable: false, + writable: true, + configurable: true +}) - if (this.fd === null) { - this._open = fs.open; - this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); - this.flush(); - } - } +function onPipe (src) { + this._src = src } +Object.defineProperty(MuteStream.prototype, 'isTTY', { + get: getIsTTY, + set: setIsTTY, + enumerable: true, + configurable: true +}) -/***/ }), +function getIsTTY () { + return( (this._dest) ? this._dest.isTTY + : (this._src) ? this._src.isTTY + : false + ) +} -/***/ "../../node_modules/graceful-fs/polyfills.js": -/***/ (function(module, exports, __webpack_require__) { +// basically just get replace the getter/setter with a regular value +function setIsTTY (isTTY) { + Object.defineProperty(this, 'isTTY', { + value: isTTY, + enumerable: true, + writable: true, + configurable: true + }) +} -var constants = __webpack_require__("constants") +Object.defineProperty(MuteStream.prototype, 'rows', { + get: function () { + return( this._dest ? this._dest.rows + : this._src ? this._src.rows + : undefined ) + }, enumerable: true, configurable: true }) -var origCwd = process.cwd -var cwd = null +Object.defineProperty(MuteStream.prototype, 'columns', { + get: function () { + return( this._dest ? this._dest.columns + : this._src ? this._src.columns + : undefined ) + }, enumerable: true, configurable: true }) -var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd +MuteStream.prototype.pipe = function (dest, options) { + this._dest = dest + return Stream.prototype.pipe.call(this, dest, options) } -try { - process.cwd() -} catch (er) {} -var chdir = process.chdir -process.chdir = function(d) { - cwd = null - chdir.call(process, d) +MuteStream.prototype.pause = function () { + if (this._src) return this._src.pause() } -module.exports = patch +MuteStream.prototype.resume = function () { + if (this._src) return this._src.resume() +} -function patch (fs) { - // (re-)implement some things that are known busted or missing. - - // lchmod, broken prior to 0.6.2 - // back-port the fix here. - if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - patchLchmod(fs) +MuteStream.prototype.write = function (c) { + if (this.muted) { + if (!this.replace) return true + if (c.match(/^\u001b/)) { + if(c.indexOf(this._prompt) === 0) { + c = c.substr(this._prompt.length); + c = c.replace(/./g, this.replace); + c = this._prompt + c; + } + this._hadControl = true + return this.emit('data', c) + } else { + if (this._prompt && this._hadControl && + c.indexOf(this._prompt) === 0) { + this._hadControl = false + this.emit('data', this._prompt) + c = c.substr(this._prompt.length) + } + c = c.toString().replace(/./g, this.replace) + } } + this.emit('data', c) +} - // lutimes implementation, or no-op - if (!fs.lutimes) { - patchLutimes(fs) +MuteStream.prototype.end = function (c) { + if (this.muted) { + if (c && this.replace) { + c = c.toString().replace(/./g, this.replace) + } else { + c = null + } } + if (c) this.emit('data', c) + this.emit('end') +} - // https://github.com/isaacs/node-graceful-fs/issues/4 - // Chown should not fail on einval or eperm if non-root. - // It should not fail on enosys ever, as this just indicates - // that a fs doesn't support the intended operation. +function proxy (fn) { return function () { + var d = this._dest + var s = this._src + if (d && d[fn]) d[fn].apply(d, arguments) + if (s && s[fn]) s[fn].apply(s, arguments) +}} - fs.chown = chownFix(fs.chown) - fs.fchown = chownFix(fs.fchown) - fs.lchown = chownFix(fs.lchown) +MuteStream.prototype.destroy = proxy('destroy') +MuteStream.prototype.destroySoon = proxy('destroySoon') +MuteStream.prototype.close = proxy('close') - fs.chmod = chmodFix(fs.chmod) - fs.fchmod = chmodFix(fs.fchmod) - fs.lchmod = chmodFix(fs.lchmod) - fs.chownSync = chownFixSync(fs.chownSync) - fs.fchownSync = chownFixSync(fs.fchownSync) - fs.lchownSync = chownFixSync(fs.lchownSync) +/***/ }), - fs.chmodSync = chmodFixSync(fs.chmodSync) - fs.fchmodSync = chmodFixSync(fs.fchmodSync) - fs.lchmodSync = chmodFixSync(fs.lchmodSync) +/***/ "../../node_modules/ncp/lib/ncp.js": +/***/ (function(module, exports, __webpack_require__) { - fs.stat = statFix(fs.stat) - fs.fstat = statFix(fs.fstat) - fs.lstat = statFix(fs.lstat) +var fs = __webpack_require__("fs"), + path = __webpack_require__("path"); - fs.statSync = statFixSync(fs.statSync) - fs.fstatSync = statFixSync(fs.fstatSync) - fs.lstatSync = statFixSync(fs.lstatSync) +module.exports = ncp; +ncp.ncp = ncp; - // if lchmod/lchown do not exist, then make them no-ops - if (!fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - if (cb) process.nextTick(cb) - } - fs.lchmodSync = function () {} - } - if (!fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - if (cb) process.nextTick(cb) - } - fs.lchownSync = function () {} +function ncp (source, dest, options, callback) { + var cback = callback; + + if (!callback) { + cback = options; + options = {}; } - // on Windows, A/V software can lock the directory, causing this - // to fail with an EACCES or EPERM if the directory contains newly - // created files. Try again on failure, for up to 60 seconds. + var basePath = process.cwd(), + currentPath = path.resolve(basePath, source), + targetPath = path.resolve(basePath, dest), + filter = options.filter, + rename = options.rename, + transform = options.transform, + clobber = options.clobber !== false, + modified = options.modified, + dereference = options.dereference, + errs = null, + started = 0, + finished = 0, + running = 0, + limit = options.limit || ncp.limit || 16; - // Set the timeout this long because some Windows Anti-Virus, such as Parity - // bit9, may lock files for up to a minute, causing npm package install - // failures. Also, take care to yield the scheduler. Windows scheduling gives - // CPU to a busy looping process, which can cause the program causing the lock - // contention to be starved of CPU by node, so the contention doesn't resolve. - if (platform === "win32") { - fs.rename = (function (fs$rename) { return function (from, to, cb) { - var start = Date.now() - var backoff = 0; - fs$rename(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM") - && Date.now() - start < 60000) { - setTimeout(function() { - fs.stat(to, function (stater, st) { - if (stater && stater.code === "ENOENT") - fs$rename(from, to, CB); - else - cb(er) - }) - }, backoff) - if (backoff < 100) - backoff += 10; - return; - } - if (cb) cb(er) - }) - }})(fs.rename) - } + limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit; - // if read() returns EAGAIN, then just try it again. - fs.read = (function (fs$read) { - function read (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return fs$read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) + startCopy(currentPath); + + function startCopy(source) { + started++; + if (filter) { + if (filter instanceof RegExp) { + if (!filter.test(source)) { + return cb(true); } } - return fs$read.call(fs, fd, buffer, offset, length, position, callback) - } - - // This ensures `util.promisify` works as it does for native `fs.read`. - read.__proto__ = fs$read - return read - })(fs.read) - - fs.readSync = (function (fs$readSync) { return function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return fs$readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue + else if (typeof filter === 'function') { + if (!filter(source)) { + return cb(true); } - throw er } } - }})(fs.readSync) + return getStats(source); + } - function patchLchmod (fs) { - fs.lchmod = function (path, mode, callback) { - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - if (callback) callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - if (callback) callback(err || err2) - }) - }) - }) + function getStats(source) { + var stat = dereference ? fs.stat : fs.lstat; + if (running >= limit) { + return setImmediate(function () { + getStats(source); + }); } + running++; + stat(source, function (err, stats) { + var item = {}; + if (err) { + return onError(err); + } - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + // We need to get the mode from the stats object and preserve it. + item.name = source; + item.mode = stats.mode; + item.mtime = stats.mtime; //modified time + item.atime = stats.atime; //access time - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var threw = true - var ret - try { - ret = fs.fchmodSync(fd, mode) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } + if (stats.isDirectory()) { + return onDir(item); } - return ret - } + else if (stats.isFile()) { + return onFile(item); + } + else if (stats.isSymbolicLink()) { + // Symlinks don't really need to know about the mode. + return onLink(source); + } + }); } - function patchLutimes (fs) { - if (constants.hasOwnProperty("O_SYMLINK")) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - if (er) { - if (cb) cb(er) - return - } - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - if (cb) cb(er || er2) - }) - }) - }) + function onFile(file) { + var target = file.name.replace(currentPath, targetPath); + if(rename) { + target = rename(target); + } + isWritable(target, function (writable) { + if (writable) { + return copyFile(file, target); } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - var ret - var threw = true - try { - ret = fs.futimesSync(fd, at, mt) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret + if(clobber) { + rmFile(target, function () { + copyFile(file, target); + }); + } + if (modified) { + var stat = dereference ? fs.stat : fs.lstat; + stat(target, function(err, stats) { + //if souce modified time greater to target modified time copy file + if (file.mtime.getTime()>stats.mtime.getTime()) + copyFile(file, target); + else return cb(); + }); + } + else { + return cb(); } + }); + } + function copyFile(file, target) { + var readStream = fs.createReadStream(file.name), + writeStream = fs.createWriteStream(target, { mode: file.mode }); + + readStream.on('error', onError); + writeStream.on('error', onError); + + if(transform) { + transform(readStream, writeStream, file); } else { - fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } - fs.lutimesSync = function () {} + writeStream.on('open', function() { + readStream.pipe(writeStream); + }); } + writeStream.once('finish', function() { + if (modified) { + //target file modified date sync. + fs.utimesSync(target, file.atime, file.mtime); + cb(); + } + else cb(); + }); } - function chmodFix (orig) { - if (!orig) return orig - return function (target, mode, cb) { - return orig.call(fs, target, mode, function (er) { - if (chownErOk(er)) er = null - if (cb) cb.apply(this, arguments) - }) - } + function rmFile(file, done) { + fs.unlink(file, function (err) { + if (err) { + return onError(err); + } + return done(); + }); } - function chmodFixSync (orig) { - if (!orig) return orig - return function (target, mode) { - try { - return orig.call(fs, target, mode) - } catch (er) { - if (!chownErOk(er)) throw er + function onDir(dir) { + var target = dir.name.replace(currentPath, targetPath); + isWritable(target, function (writable) { + if (writable) { + return mkDir(dir, target); } - } + copyDir(dir.name); + }); } + function mkDir(dir, target) { + fs.mkdir(target, dir.mode, function (err) { + if (err) { + return onError(err); + } + copyDir(dir.name); + }); + } - function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er) { - if (chownErOk(er)) er = null - if (cb) cb.apply(this, arguments) - }) - } + function copyDir(dir) { + fs.readdir(dir, function (err, items) { + if (err) { + return onError(err); + } + items.forEach(function (item) { + startCopy(path.join(dir, item)); + }); + return cb(); + }); } - function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er + function onLink(link) { + var target = link.replace(currentPath, targetPath); + fs.readlink(link, function (err, resolvedPath) { + if (err) { + return onError(err); } - } + checkLink(resolvedPath, target); + }); } - function statFix (orig) { - if (!orig) return orig - // Older versions of Node erroneously returned signed integers for - // uid + gid. - return function (target, options, cb) { - if (typeof options === 'function') { - cb = options - options = null + function checkLink(resolvedPath, target) { + if (dereference) { + resolvedPath = path.resolve(basePath, resolvedPath); + } + isWritable(target, function (writable) { + if (writable) { + return makeLink(resolvedPath, target); } - function callback (er, stats) { - if (stats) { - if (stats.uid < 0) stats.uid += 0x100000000 - if (stats.gid < 0) stats.gid += 0x100000000 + fs.readlink(target, function (err, targetDest) { + if (err) { + return onError(err); } - if (cb) cb.apply(this, arguments) + if (dereference) { + targetDest = path.resolve(basePath, targetDest); + } + if (targetDest === resolvedPath) { + return cb(); + } + return rmFile(target, function () { + makeLink(resolvedPath, target); + }); + }); + }); + } + + function makeLink(linkPath, target) { + fs.symlink(linkPath, target, function (err) { + if (err) { + return onError(err); } - return options ? orig.call(fs, target, options, callback) - : orig.call(fs, target, callback) + return cb(); + }); + } + + function isWritable(path, done) { + fs.lstat(path, function (err) { + if (err) { + if (err.code === 'ENOENT') return done(true); + return done(false); + } + return done(false); + }); + } + + function onError(err) { + if (options.stopOnError) { + return cback(err); + } + else if (!errs && options.errs) { + errs = fs.createWriteStream(options.errs); + } + else if (!errs) { + errs = []; + } + if (typeof errs.write === 'undefined') { + errs.push(err); } + else { + errs.write(err.stack + '\n\n'); + } + return cb(); } - function statFixSync (orig) { - if (!orig) return orig - // Older versions of Node erroneously returned signed integers for - // uid + gid. - return function (target, options) { - var stats = options ? orig.call(fs, target, options) - : orig.call(fs, target) - if (stats.uid < 0) stats.uid += 0x100000000 - if (stats.gid < 0) stats.gid += 0x100000000 - return stats; + function cb(skipped) { + if (!skipped) running--; + finished++; + if ((started === finished) && (running === 0)) { + if (cback !== undefined ) { + return errs ? cback(errs) : cback(null); + } } } +} - // ENOSYS means that the fs doesn't support the op. Just ignore - // that, because it doesn't matter. - // - // if there's no getuid, or if getuid() is something other - // than 0, and the error is EINVAL or EPERM, then just ignore - // it. - // - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // - // When running as root, or if other types of errors are - // encountered, then it's strict. - function chownErOk (er) { - if (!er) - return true - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false - } -} /***/ }), -/***/ "../../node_modules/has-flag/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; +/***/ "../../node_modules/normalize-package-data/lib/extract_description.js": +/***/ (function(module, exports) { +module.exports = extractDescription -module.exports = (flag, argv = process.argv) => { - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const position = argv.indexOf(prefix + flag); - const terminatorPosition = argv.indexOf('--'); - return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); -}; +// Extracts description from contents of a readme file in markdown format +function extractDescription (d) { + if (!d) return; + if (d === "ERROR: No README data found!") return; + // the first block of text before the first heading + // that isn't the first line heading + d = d.trim().split('\n') + for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++); + var l = d.length + for (var e = s + 1; e < l && d[e].trim(); e ++); + return d.slice(s, e).join(' ').trim() +} /***/ }), -/***/ "../../node_modules/has-glob/index.js": +/***/ "../../node_modules/normalize-package-data/lib/fixer.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/*! - * has-glob - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - +var semver = __webpack_require__("../../node_modules/normalize-package-data/node_modules/semver/semver.js") +var validateLicense = __webpack_require__("../../node_modules/validate-npm-package-license/index.js"); +var hostedGitInfo = __webpack_require__("../../node_modules/hosted-git-info/index.js") +var isBuiltinModule = __webpack_require__("../../node_modules/resolve/index.js").isCore +var depTypes = ["dependencies","devDependencies","optionalDependencies"] +var extractDescription = __webpack_require__("../../node_modules/normalize-package-data/lib/extract_description.js") +var url = __webpack_require__("url") +var typos = __webpack_require__("../../node_modules/normalize-package-data/lib/typos.json") -var isGlob = __webpack_require__("../../node_modules/has-glob/node_modules/is-glob/index.js"); +var fixer = module.exports = { + // default warning function + warn: function() {}, -module.exports = function hasGlob(val) { - if (val == null) return false; - if (typeof val === 'string') { - return isGlob(val); - } - if (Array.isArray(val)) { - var len = val.length; - while (len--) { - if (isGlob(val[len])) { - return true; + fixRepositoryField: function(data) { + if (data.repositories) { + this.warn("repositories"); + data.repository = data.repositories[0] + } + if (!data.repository) return this.warn("missingRepository") + if (typeof data.repository === "string") { + data.repository = { + type: "git", + url: data.repository + } + } + var r = data.repository.url || "" + if (r) { + var hosted = hostedGitInfo.fromUrl(r) + if (hosted) { + r = data.repository.url + = hosted.getDefaultRepresentation() == "shortcut" ? hosted.https() : hosted.toString() } } - } - return false; -}; - - -/***/ }), - -/***/ "../../node_modules/has-glob/node_modules/is-glob/index.js": -/***/ (function(module, exports, __webpack_require__) { - -/*! - * is-glob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ - -var isExtglob = __webpack_require__("../../node_modules/is-extglob/index.js"); -module.exports = function isGlob(str) { - if (typeof str !== 'string' || str === '') { - return false; + if (r.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)) { + this.warn("brokenGitUrl", r) + } } - if (isExtglob(str)) return true; - - var regex = /(\\).|([*?]|\[.*\]|\{.*\}|\(.*\|.*\)|^!)/; - var match; - - while ((match = regex.exec(str))) { - if (match[2]) return true; - str = str.slice(match.index + match[0].length); +, fixTypos: function(data) { + Object.keys(typos.topLevel).forEach(function (d) { + if (data.hasOwnProperty(d)) { + this.warn("typo", d, typos.topLevel[d]) + } + }, this) } - return false; -}; +, fixScriptsField: function(data) { + if (!data.scripts) return + if (typeof data.scripts !== "object") { + this.warn("nonObjectScripts") + delete data.scripts + return + } + Object.keys(data.scripts).forEach(function (k) { + if (typeof data.scripts[k] !== "string") { + this.warn("nonStringScript") + delete data.scripts[k] + } else if (typos.script[k] && !data.scripts[typos.script[k]]) { + this.warn("typo", k, typos.script[k], "scripts") + } + }, this) + } -/***/ }), - -/***/ "../../node_modules/has-value/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * has-value - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Licensed under the MIT License. - */ +, fixFilesField: function(data) { + var files = data.files + if (files && !Array.isArray(files)) { + this.warn("nonArrayFiles") + delete data.files + } else if (data.files) { + data.files = data.files.filter(function(file) { + if (!file || typeof file !== "string") { + this.warn("invalidFilename", file) + return false + } else { + return true + } + }, this) + } + } +, fixBinField: function(data) { + if (!data.bin) return; + if (typeof data.bin === "string") { + var b = {} + var match + if (match = data.name.match(/^@[^/]+[/](.*)$/)) { + b[match[1]] = data.bin + } else { + b[data.name] = data.bin + } + data.bin = b + } + } +, fixManField: function(data) { + if (!data.man) return; + if (typeof data.man === "string") { + data.man = [ data.man ] + } + } +, fixBundleDependenciesField: function(data) { + var bdd = "bundledDependencies" + var bd = "bundleDependencies" + if (data[bdd] && !data[bd]) { + data[bd] = data[bdd] + delete data[bdd] + } + if (data[bd] && !Array.isArray(data[bd])) { + this.warn("nonArrayBundleDependencies") + delete data[bd] + } else if (data[bd]) { + data[bd] = data[bd].filter(function(bd) { + if (!bd || typeof bd !== 'string') { + this.warn("nonStringBundleDependency", bd) + return false + } else { + if (!data.dependencies) { + data.dependencies = {} + } + if (!data.dependencies.hasOwnProperty(bd)) { + this.warn("nonDependencyBundleDependency", bd) + data.dependencies[bd] = "*" + } + return true + } + }, this) + } + } -var isObject = __webpack_require__("../../node_modules/isobject/index.js"); -var hasValues = __webpack_require__("../../node_modules/has-values/index.js"); -var get = __webpack_require__("../../node_modules/get-value/index.js"); +, fixDependencies: function(data, strict) { + var loose = !strict + objectifyDeps(data, this.warn) + addOptionalDepsToDeps(data, this.warn) + this.fixBundleDependenciesField(data) -module.exports = function(val, prop) { - return hasValues(isObject(val) && prop ? get(val, prop) : val); -}; + ;['dependencies','devDependencies'].forEach(function(deps) { + if (!(deps in data)) return + if (!data[deps] || typeof data[deps] !== "object") { + this.warn("nonObjectDependencies", deps) + delete data[deps] + return + } + Object.keys(data[deps]).forEach(function (d) { + var r = data[deps][d] + if (typeof r !== 'string') { + this.warn("nonStringDependency", d, JSON.stringify(r)) + delete data[deps][d] + } + var hosted = hostedGitInfo.fromUrl(data[deps][d]) + if (hosted) data[deps][d] = hosted.toString() + }, this) + }, this) + } +, fixModulesField: function (data) { + if (data.modules) { + this.warn("deprecatedModules") + delete data.modules + } + } -/***/ }), +, fixKeywordsField: function (data) { + if (typeof data.keywords === "string") { + data.keywords = data.keywords.split(/,\s+/) + } + if (data.keywords && !Array.isArray(data.keywords)) { + delete data.keywords + this.warn("nonArrayKeywords") + } else if (data.keywords) { + data.keywords = data.keywords.filter(function(kw) { + if (typeof kw !== "string" || !kw) { + this.warn("nonStringKeyword"); + return false + } else { + return true + } + }, this) + } + } -/***/ "../../node_modules/has-values/index.js": -/***/ (function(module, exports, __webpack_require__) { +, fixVersionField: function(data, strict) { + // allow "loose" semver 1.0 versions in non-strict mode + // enforce strict semver 2.0 compliance in strict mode + var loose = !strict + if (!data.version) { + data.version = "" + return true + } + if (!semver.valid(data.version, loose)) { + throw new Error('Invalid version: "'+ data.version + '"') + } + data.version = semver.clean(data.version, loose) + return true + } -"use strict"; -/*! - * has-values - * - * Copyright (c) 2014-2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ +, fixPeople: function(data) { + modifyPeople(data, unParsePerson) + modifyPeople(data, parsePerson) + } +, fixNameField: function(data, options) { + if (typeof options === "boolean") options = {strict: options} + else if (typeof options === "undefined") options = {} + var strict = options.strict + if (!data.name && !strict) { + data.name = "" + return + } + if (typeof data.name !== "string") { + throw new Error("name field must be a string.") + } + if (!strict) + data.name = data.name.trim() + ensureValidName(data.name, strict, options.allowLegacyCase) + if (isBuiltinModule(data.name)) + this.warn("conflictingName", data.name) + } -var typeOf = __webpack_require__("../../node_modules/has-values/node_modules/kind-of/index.js"); -var isNumber = __webpack_require__("../../node_modules/is-number/index.js"); +, fixDescriptionField: function (data) { + if (data.description && typeof data.description !== 'string') { + this.warn("nonStringDescription") + delete data.description + } + if (data.readme && !data.description) + data.description = extractDescription(data.readme) + if(data.description === undefined) delete data.description; + if (!data.description) this.warn("missingDescription") + } -module.exports = function hasValue(val) { - // is-number checks for NaN and other edge cases - if (isNumber(val)) { - return true; +, fixReadmeField: function (data) { + if (!data.readme) { + this.warn("missingReadme") + data.readme = "ERROR: No README data found!" + } } - switch (typeOf(val)) { - case 'null': - case 'boolean': - case 'function': - return true; - case 'string': - case 'arguments': - return val.length !== 0; - case 'error': - return val.message !== ''; - case 'array': - var len = val.length; - if (len === 0) { - return false; - } - for (var i = 0; i < len; i++) { - if (hasValue(val[i])) { - return true; - } +, fixBugsField: function(data) { + if (!data.bugs && data.repository && data.repository.url) { + var hosted = hostedGitInfo.fromUrl(data.repository.url) + if(hosted && hosted.bugs()) { + data.bugs = {url: hosted.bugs()} } - return false; - case 'file': - case 'map': - case 'set': - return val.size !== 0; - case 'object': - var keys = Object.keys(val); - if (keys.length === 0) { - return false; + } + else if(data.bugs) { + var emailRe = /^.+@.*\..+$/ + if(typeof data.bugs == "string") { + if(emailRe.test(data.bugs)) + data.bugs = {email:data.bugs} + else if(url.parse(data.bugs).protocol) + data.bugs = {url: data.bugs} + else + this.warn("nonEmailUrlBugsString") } - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (hasValue(val[key])) { - return true; + else { + bugsTypos(data.bugs, this.warn) + var oldBugs = data.bugs + data.bugs = {} + if(oldBugs.url) { + if(typeof(oldBugs.url) == "string" && url.parse(oldBugs.url).protocol) + data.bugs.url = oldBugs.url + else + this.warn("nonUrlBugsUrlField") + } + if(oldBugs.email) { + if(typeof(oldBugs.email) == "string" && emailRe.test(oldBugs.email)) + data.bugs.email = oldBugs.email + else + this.warn("nonEmailBugsEmailField") } } - return false; - default: { - return false; + if(!data.bugs.email && !data.bugs.url) { + delete data.bugs + this.warn("emptyNormalizedBugs") + } } } -}; +, fixHomepageField: function(data) { + if (!data.homepage && data.repository && data.repository.url) { + var hosted = hostedGitInfo.fromUrl(data.repository.url) + if (hosted && hosted.docs()) data.homepage = hosted.docs() + } + if (!data.homepage) return -/***/ }), + if(typeof data.homepage !== "string") { + this.warn("nonUrlHomepage") + return delete data.homepage + } + if(!url.parse(data.homepage).protocol) { + data.homepage = "http://" + data.homepage + } + } -/***/ "../../node_modules/has-values/node_modules/kind-of/index.js": -/***/ (function(module, exports, __webpack_require__) { +, fixLicenseField: function(data) { + if (!data.license) { + return this.warn("missingLicense") + } else{ + if ( + typeof(data.license) !== 'string' || + data.license.length < 1 || + data.license.trim() === '' + ) { + this.warn("invalidLicense") + } else { + if (!validateLicense(data.license).validForNewPackages) + this.warn("invalidLicense") + } + } + } +} -var isBuffer = __webpack_require__("../../node_modules/is-buffer/index.js"); -var toString = Object.prototype.toString; +function isValidScopedPackageName(spec) { + if (spec.charAt(0) !== '@') return false -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ + var rest = spec.slice(1).split('/') + if (rest.length !== 2) return false -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } + return rest[0] && rest[1] && + rest[0] === encodeURIComponent(rest[0]) && + rest[1] === encodeURIComponent(rest[1]) +} - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } +function isCorrectlyEncodedName(spec) { + return !spec.match(/[\/@\s\+%:]/) && + spec === encodeURIComponent(spec) +} - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; +function ensureValidName (name, strict, allowLegacyCase) { + if (name.charAt(0) === "." || + !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) || + (strict && (!allowLegacyCase) && name !== name.toLowerCase()) || + name.toLowerCase() === "node_modules" || + name.toLowerCase() === "favicon.ico") { + throw new Error("Invalid name: " + JSON.stringify(name)) } +} - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } +function modifyPeople (data, fn) { + if (data.author) data.author = fn(data.author) + ;["maintainers", "contributors"].forEach(function (set) { + if (!Array.isArray(data[set])) return; + data[set] = data[set].map(fn) + }) + return data +} - // other objects - var type = toString.call(val); +function unParsePerson (person) { + if (typeof person === "string") return person + var name = person.name || "" + var u = person.url || person.web + var url = u ? (" ("+u+")") : "" + var e = person.email || person.mail + var email = e ? (" <"+e+">") : "" + return name+email+url +} - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - if (type === '[object Promise]') { - return 'promise'; - } +function parsePerson (person) { + if (typeof person !== "string") return person + var name = person.match(/^([^\(<]+)/) + var url = person.match(/\(([^\)]+)\)/) + var email = person.match(/<([^>]+)>/) + var obj = {} + if (name && name[0].trim()) obj.name = name[0].trim() + if (email) obj.email = email[1]; + if (url) obj.url = url[1]; + return obj +} - // buffer - if (isBuffer(val)) { - return 'buffer'; - } +function addOptionalDepsToDeps (data, warn) { + var o = data.optionalDependencies + if (!o) return; + var d = data.dependencies || {} + Object.keys(o).forEach(function (k) { + d[k] = o[k] + }) + data.dependencies = d +} - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; +function depObjectify (deps, type, warn) { + if (!deps) return {} + if (typeof deps === "string") { + deps = deps.trim().split(/[\n\r\s\t ,]+/) } + if (!Array.isArray(deps)) return deps + warn("deprecatedArrayDependencies", type) + var o = {} + deps.filter(function (d) { + return typeof d === "string" + }).forEach(function(d) { + d = d.trim().split(/(:?[@\s><=])/) + var dn = d.shift() + var dv = d.join("") + dv = dv.trim() + dv = dv.replace(/^@/, "") + o[dn] = dv + }) + return o +} - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } +function objectifyDeps (data, warn) { + depTypes.forEach(function (type) { + if (!data[type]) return; + data[type] = depObjectify(data[type], type, warn) + }) +} - // must be a plain object - return 'object'; -}; +function bugsTypos(bugs, warn) { + if (!bugs) return + Object.keys(bugs).forEach(function (k) { + if (typos.bugs[k]) { + warn("typo", k, typos.bugs[k], "bugs") + bugs[typos.bugs[k]] = bugs[k] + delete bugs[k] + } + }) +} /***/ }), -/***/ "../../node_modules/has/src/index.js": +/***/ "../../node_modules/normalize-package-data/lib/make_warning.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; +var util = __webpack_require__("util") +var messages = __webpack_require__("../../node_modules/normalize-package-data/lib/warning_messages.json") +module.exports = function() { + var args = Array.prototype.slice.call(arguments, 0) + var warningName = args.shift() + if (warningName == "typo") { + return makeTypoWarning.apply(null,args) + } + else { + var msgTemplate = messages[warningName] ? messages[warningName] : warningName + ": '%s'" + args.unshift(msgTemplate) + return util.format.apply(null, args) + } +} -var bind = __webpack_require__("../../node_modules/function-bind/index.js"); - -module.exports = bind.call(Function.call, Object.prototype.hasOwnProperty); +function makeTypoWarning (providedName, probableName, field) { + if (field) { + providedName = field + "['" + providedName + "']" + probableName = field + "['" + probableName + "']" + } + return util.format(messages.typo, providedName, probableName) +} /***/ }), -/***/ "../../node_modules/hosted-git-info/git-host-info.js": +/***/ "../../node_modules/normalize-package-data/lib/normalize.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; +module.exports = normalize +var fixer = __webpack_require__("../../node_modules/normalize-package-data/lib/fixer.js") +normalize.fixer = fixer -var gitHosts = module.exports = { - github: { - // First two are insecure and generally shouldn't be used any more, but - // they are still supported. - 'protocols': [ 'git', 'http', 'git+ssh', 'git+https', 'ssh', 'https' ], - 'domain': 'github.com', - 'treepath': 'tree', - 'filetemplate': 'https://{auth@}raw.githubusercontent.com/{user}/{project}/{committish}/{path}', - 'bugstemplate': 'https://{domain}/{user}/{project}/issues', - 'gittemplate': 'git://{auth@}{domain}/{user}/{project}.git{#committish}', - 'tarballtemplate': 'https://codeload.{domain}/{user}/{project}/tar.gz/{committish}' - }, - bitbucket: { - 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], - 'domain': 'bitbucket.org', - 'treepath': 'src', - 'tarballtemplate': 'https://{domain}/{user}/{project}/get/{committish}.tar.gz' - }, - gitlab: { - 'protocols': [ 'git+ssh', 'git+https', 'ssh', 'https' ], - 'domain': 'gitlab.com', - 'treepath': 'tree', - 'bugstemplate': 'https://{domain}/{user}/{project}/issues', - 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{projectPath}.git{#committish}', - 'tarballtemplate': 'https://{domain}/{user}/{project}/repository/archive.tar.gz?ref={committish}', - 'pathmatch': /^[/]([^/]+)[/]((?!.*(\/-\/|\/repository\/archive\.tar\.gz\?=.*|\/repository\/[^/]+\/archive.tar.gz$)).*?)(?:[.]git|[/])?$/ - }, - gist: { - 'protocols': [ 'git', 'git+ssh', 'git+https', 'ssh', 'https' ], - 'domain': 'gist.github.com', - 'pathmatch': /^[/](?:([^/]+)[/])?([a-z0-9]{32,})(?:[.]git)?$/, - 'filetemplate': 'https://gist.githubusercontent.com/{user}/{project}/raw{/committish}/{path}', - 'bugstemplate': 'https://{domain}/{project}', - 'gittemplate': 'git://{domain}/{project}.git{#committish}', - 'sshtemplate': 'git@{domain}:/{project}.git{#committish}', - 'sshurltemplate': 'git+ssh://git@{domain}/{project}.git{#committish}', - 'browsetemplate': 'https://{domain}/{project}{/committish}', - 'browsefiletemplate': 'https://{domain}/{project}{/committish}{#path}', - 'docstemplate': 'https://{domain}/{project}{/committish}', - 'httpstemplate': 'git+https://{domain}/{project}.git{#committish}', - 'shortcuttemplate': '{type}:{project}{#committish}', - 'pathtemplate': '{project}{#committish}', - 'tarballtemplate': 'https://codeload.github.com/gist/{project}/tar.gz/{committish}', - 'hashformat': function (fragment) { - return 'file-' + formatHashFragment(fragment) - } +var makeWarning = __webpack_require__("../../node_modules/normalize-package-data/lib/make_warning.js") + +var fieldsToFix = ['name','version','description','repository','modules','scripts' + ,'files','bin','man','bugs','keywords','readme','homepage','license'] +var otherThingsToFix = ['dependencies','people', 'typos'] + +var thingsToFix = fieldsToFix.map(function(fieldName) { + return ucFirst(fieldName) + "Field" +}) +// two ways to do this in CoffeeScript on only one line, sub-70 chars: +// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + "Field" +// thingsToFix = (ucFirst(name) + "Field" for name in fieldsToFix) +thingsToFix = thingsToFix.concat(otherThingsToFix) + +function normalize (data, warn, strict) { + if(warn === true) warn = null, strict = true + if(!strict) strict = false + if(!warn || data.private) warn = function(msg) { /* noop */ } + + if (data.scripts && + data.scripts.install === "node-gyp rebuild" && + !data.scripts.preinstall) { + data.gypfile = true } + fixer.warn = function() { warn(makeWarning.apply(null, arguments)) } + thingsToFix.forEach(function(thingName) { + fixer["fix" + ucFirst(thingName)](data, strict) + }) + data._id = data.name + "@" + data.version } -var gitHostDefaults = { - 'sshtemplate': 'git@{domain}:{user}/{project}.git{#committish}', - 'sshurltemplate': 'git+ssh://git@{domain}/{user}/{project}.git{#committish}', - 'browsetemplate': 'https://{domain}/{user}/{project}{/tree/committish}', - 'browsefiletemplate': 'https://{domain}/{user}/{project}/{treepath}/{committish}/{path}{#fragment}', - 'docstemplate': 'https://{domain}/{user}/{project}{/tree/committish}#readme', - 'httpstemplate': 'git+https://{auth@}{domain}/{user}/{project}.git{#committish}', - 'filetemplate': 'https://{domain}/{user}/{project}/raw/{committish}/{path}', - 'shortcuttemplate': '{type}:{user}/{project}{#committish}', - 'pathtemplate': '{user}/{project}{#committish}', - 'pathmatch': /^[/]([^/]+)[/]([^/]+?)(?:[.]git|[/])?$/, - 'hashformat': formatHashFragment +function ucFirst (string) { + return string.charAt(0).toUpperCase() + string.slice(1); } -Object.keys(gitHosts).forEach(function (name) { - Object.keys(gitHostDefaults).forEach(function (key) { - if (gitHosts[name][key]) return - gitHosts[name][key] = gitHostDefaults[key] - }) - gitHosts[name].protocols_re = RegExp('^(' + - gitHosts[name].protocols.map(function (protocol) { - return protocol.replace(/([\\+*{}()[\]$^|])/g, '\\$1') - }).join('|') + '):$') -}) -function formatHashFragment (fragment) { - return fragment.toLowerCase().replace(/^\W+|\/|\W+$/g, '').replace(/\W+/g, '-') -} +/***/ }), + +/***/ "../../node_modules/normalize-package-data/lib/typos.json": +/***/ (function(module) { +module.exports = JSON.parse("{\"topLevel\":{\"dependancies\":\"dependencies\",\"dependecies\":\"dependencies\",\"depdenencies\":\"dependencies\",\"devEependencies\":\"devDependencies\",\"depends\":\"dependencies\",\"dev-dependencies\":\"devDependencies\",\"devDependences\":\"devDependencies\",\"devDepenencies\":\"devDependencies\",\"devdependencies\":\"devDependencies\",\"repostitory\":\"repository\",\"repo\":\"repository\",\"prefereGlobal\":\"preferGlobal\",\"hompage\":\"homepage\",\"hampage\":\"homepage\",\"autohr\":\"author\",\"autor\":\"author\",\"contributers\":\"contributors\",\"publicationConfig\":\"publishConfig\",\"script\":\"scripts\"},\"bugs\":{\"web\":\"url\",\"name\":\"url\"},\"script\":{\"server\":\"start\",\"tests\":\"test\"}}"); /***/ }), -/***/ "../../node_modules/hosted-git-info/git-host.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/normalize-package-data/lib/warning_messages.json": +/***/ (function(module) { -"use strict"; +module.exports = JSON.parse("{\"repositories\":\"'repositories' (plural) Not supported. Please pick one as the 'repository' field\",\"missingRepository\":\"No repository field.\",\"brokenGitUrl\":\"Probably broken git url: %s\",\"nonObjectScripts\":\"scripts must be an object\",\"nonStringScript\":\"script values must be string commands\",\"nonArrayFiles\":\"Invalid 'files' member\",\"invalidFilename\":\"Invalid filename in 'files' list: %s\",\"nonArrayBundleDependencies\":\"Invalid 'bundleDependencies' list. Must be array of package names\",\"nonStringBundleDependency\":\"Invalid bundleDependencies member: %s\",\"nonDependencyBundleDependency\":\"Non-dependency in bundleDependencies: %s\",\"nonObjectDependencies\":\"%s field must be an object\",\"nonStringDependency\":\"Invalid dependency: %s %s\",\"deprecatedArrayDependencies\":\"specifying %s as array is deprecated\",\"deprecatedModules\":\"modules field is deprecated\",\"nonArrayKeywords\":\"keywords should be an array of strings\",\"nonStringKeyword\":\"keywords should be an array of strings\",\"conflictingName\":\"%s is also the name of a node core module.\",\"nonStringDescription\":\"'description' field should be a string\",\"missingDescription\":\"No description\",\"missingReadme\":\"No README data\",\"missingLicense\":\"No license field.\",\"nonEmailUrlBugsString\":\"Bug string field must be url, email, or {email,url}\",\"nonUrlBugsUrlField\":\"bugs.url field must be a string url. Deleted.\",\"nonEmailBugsEmailField\":\"bugs.email field must be a string email. Deleted.\",\"emptyNormalizedBugs\":\"Normalized value of bugs field is an empty object. Deleted.\",\"nonUrlHomepage\":\"homepage field must be a string url. Deleted.\",\"invalidLicense\":\"license should be a valid SPDX license expression\",\"typo\":\"%s should probably be %s.\"}"); -var gitHosts = __webpack_require__("../../node_modules/hosted-git-info/git-host-info.js") -/* eslint-disable node/no-deprecated-api */ +/***/ }), -// copy-pasta util._extend from node's source, to avoid pulling -// the whole util module into peoples' webpack bundles. -/* istanbul ignore next */ -var extend = Object.assign || function _extend (target, source) { - // Don't do anything if source isn't an object - if (source === null || typeof source !== 'object') return target +/***/ "../../node_modules/normalize-package-data/node_modules/semver/semver.js": +/***/ (function(module, exports) { - var keys = Object.keys(source) - var i = keys.length - while (i--) { - target[keys[i]] = source[keys[i]] +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) } - return target +} else { + debug = function () {} } -module.exports = GitHost -function GitHost (type, user, auth, project, committish, defaultRepresentation, opts) { - var gitHostInfo = this - gitHostInfo.type = type - Object.keys(gitHosts[type]).forEach(function (key) { - gitHostInfo[key] = gitHosts[type][key] - }) - gitHostInfo.user = user - gitHostInfo.auth = auth - gitHostInfo.project = project - gitHostInfo.committish = committish - gitHostInfo.default = defaultRepresentation - gitHostInfo.opts = opts || {} -} +// 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' -GitHost.prototype.hash = function () { - return this.committish ? '#' + this.committish : '' -} +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 -GitHost.prototype._fill = function (template, opts) { - if (!template) return - var vars = extend({}, opts) - vars.path = vars.path ? vars.path.replace(/^[/]+/g, '') : '' - opts = extend(extend({}, this.opts), opts) - var self = this - Object.keys(this).forEach(function (key) { - if (self[key] != null && vars[key] == null) vars[key] = self[key] - }) - var rawAuth = vars.auth - var rawcommittish = vars.committish - var rawFragment = vars.fragment - var rawPath = vars.path - var rawProject = vars.project - Object.keys(vars).forEach(function (key) { - var value = vars[key] - if ((key === 'path' || key === 'project') && typeof value === 'string') { - vars[key] = value.split('/').map(function (pathComponent) { - return encodeURIComponent(pathComponent) - }).join('/') - } else { - vars[key] = encodeURIComponent(value) - } - }) - vars['auth@'] = rawAuth ? rawAuth + '@' : '' - vars['#fragment'] = rawFragment ? '#' + this.hashformat(rawFragment) : '' - vars.fragment = vars.fragment ? vars.fragment : '' - vars['#path'] = rawPath ? '#' + this.hashformat(rawPath) : '' - vars['/path'] = vars.path ? '/' + vars.path : '' - vars.projectPath = rawProject.split('/').map(encodeURIComponent).join('/') - if (opts.noCommittish) { - vars['#committish'] = '' - vars['/tree/committish'] = '' - vars['/committish'] = '' - vars.committish = '' - } else { - vars['#committish'] = rawcommittish ? '#' + rawcommittish : '' - vars['/tree/committish'] = vars.committish - ? '/' + vars.treepath + '/' + vars.committish - : '' - vars['/committish'] = vars.committish ? '/' + vars.committish : '' - vars.committish = vars.committish || 'master' - } - var res = template - Object.keys(vars).forEach(function (key) { - res = res.replace(new RegExp('[{]' + key + '[}]', 'g'), vars[key]) - }) - if (opts.noGitPlus) { - return res.replace(/^git[+]/, '') - } else { - return res - } -} +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 -GitHost.prototype.ssh = function (opts) { - return this._fill(this.sshtemplate, opts) -} +// The actual regexps go on exports.re +var re = exports.re = [] +var src = exports.src = [] +var R = 0 -GitHost.prototype.sshurl = function (opts) { - return this._fill(this.sshurltemplate, opts) -} +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. -GitHost.prototype.browse = function (P, F, opts) { - if (typeof P === 'string') { - if (typeof F !== 'string') { - opts = F - F = null - } - return this._fill(this.browsefiletemplate, extend({ - fragment: F, - path: P - }, opts)) - } else { - return this._fill(this.browsetemplate, P) - } -} +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. -GitHost.prototype.docs = function (opts) { - return this._fill(this.docstemplate, opts) -} +var NUMERICIDENTIFIER = R++ +src[NUMERICIDENTIFIER] = '0|[1-9]\\d*' +var NUMERICIDENTIFIERLOOSE = R++ +src[NUMERICIDENTIFIERLOOSE] = '[0-9]+' -GitHost.prototype.bugs = function (opts) { - return this._fill(this.bugstemplate, opts) -} +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. -GitHost.prototype.https = function (opts) { - return this._fill(this.httpstemplate, opts) -} +var NONNUMERICIDENTIFIER = R++ +src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' -GitHost.prototype.git = function (opts) { - return this._fill(this.gittemplate, opts) -} +// ## Main Version +// Three dot-separated numeric identifiers. -GitHost.prototype.shortcut = function (opts) { - return this._fill(this.shortcuttemplate, opts) -} +var MAINVERSION = R++ +src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')\\.' + + '(' + src[NUMERICIDENTIFIER] + ')' -GitHost.prototype.path = function (opts) { - return this._fill(this.pathtemplate, opts) -} +var MAINVERSIONLOOSE = R++ +src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[NUMERICIDENTIFIERLOOSE] + ')' -GitHost.prototype.tarball = function (opts_) { - var opts = extend({}, opts_, { noCommittish: false }) - return this._fill(this.tarballtemplate, opts) -} +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. -GitHost.prototype.file = function (P, opts) { - return this._fill(this.filetemplate, extend({ path: P }, opts)) -} +var PRERELEASEIDENTIFIER = R++ +src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + + '|' + src[NONNUMERICIDENTIFIER] + ')' -GitHost.prototype.getDefaultRepresentation = function () { - return this.default -} +var PRERELEASEIDENTIFIERLOOSE = R++ +src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + + '|' + src[NONNUMERICIDENTIFIER] + ')' -GitHost.prototype.toString = function (opts) { - if (this.default && typeof this[this.default] === 'function') return this[this.default](opts) - return this.sshurl(opts) -} +// ## 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] + ')*))' -/***/ "../../node_modules/hosted-git-info/index.js": -/***/ (function(module, exports, __webpack_require__) { +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. -"use strict"; +var BUILDIDENTIFIER = R++ +src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+' -var url = __webpack_require__("url") -var gitHosts = __webpack_require__("../../node_modules/hosted-git-info/git-host-info.js") -var GitHost = module.exports = __webpack_require__("../../node_modules/hosted-git-info/git-host.js") +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. -var protocolToRepresentationMap = { - 'git+ssh:': 'sshurl', - 'git+https:': 'https', - 'ssh:': 'sshurl', - 'git:': 'git' -} +var BUILD = R++ +src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + + '(?:\\.' + src[BUILDIDENTIFIER] + ')*))' -function protocolToRepresentation (protocol) { - return protocolToRepresentationMap[protocol] || protocol.slice(0, -1) -} +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. -var authProtocols = { - 'git:': true, - 'https:': true, - 'git+https:': true, - 'http:': true, - 'git+http:': true -} +// 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 cache = {} +var FULL = R++ +var FULLPLAIN = 'v?' + src[MAINVERSION] + + src[PRERELEASE] + '?' + + src[BUILD] + '?' -module.exports.fromUrl = function (giturl, opts) { - if (typeof giturl !== 'string') return - var key = giturl + JSON.stringify(opts || {}) +src[FULL] = '^' + FULLPLAIN + '$' - if (!(key in cache)) { - cache[key] = fromUrl(giturl, opts) - } +// 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] + '?' - return cache[key] -} +var LOOSE = R++ +src[LOOSE] = '^' + LOOSEPLAIN + '$' -function fromUrl (giturl, opts) { - if (giturl == null || giturl === '') return - var url = fixupUnqualifiedGist( - isGitHubShorthand(giturl) ? 'github:' + giturl : giturl - ) - var parsed = parseGitUrl(url) - var shortcutMatch = url.match(/^([^:]+):(?:[^@]+@)?(?:([^/]*)\/)?([^#]+)/) - var matches = Object.keys(gitHosts).map(function (gitHostName) { - try { - var gitHostInfo = gitHosts[gitHostName] - var auth = null - if (parsed.auth && authProtocols[parsed.protocol]) { - auth = parsed.auth - } - var committish = parsed.hash ? decodeURIComponent(parsed.hash.substr(1)) : null - var user = null - var project = null - var defaultRepresentation = null - if (shortcutMatch && shortcutMatch[1] === gitHostName) { - user = shortcutMatch[2] && decodeURIComponent(shortcutMatch[2]) - project = decodeURIComponent(shortcutMatch[3].replace(/\.git$/, '')) - defaultRepresentation = 'shortcut' - } else { - if (parsed.host && parsed.host !== gitHostInfo.domain && parsed.host.replace(/^www[.]/, '') !== gitHostInfo.domain) return - if (!gitHostInfo.protocols_re.test(parsed.protocol)) return - if (!parsed.path) return - var pathmatch = gitHostInfo.pathmatch - var matched = parsed.path.match(pathmatch) - if (!matched) return - /* istanbul ignore else */ - if (matched[1] !== null && matched[1] !== undefined) { - user = decodeURIComponent(matched[1].replace(/^:/, '')) - } - project = decodeURIComponent(matched[2]) - defaultRepresentation = protocolToRepresentation(parsed.protocol) - } - return new GitHost(gitHostName, user, auth, project, committish, defaultRepresentation, opts) - } catch (ex) { - /* istanbul ignore else */ - if (ex instanceof URIError) { - } else throw ex - } - }).filter(function (gitHostInfo) { return gitHostInfo }) - if (matches.length !== 1) return - return matches[0] -} +var GTLT = R++ +src[GTLT] = '((?:<|>)?=?)' -function isGitHubShorthand (arg) { - // Note: This does not fully test the git ref format. - // See https://www.kernel.org/pub/software/scm/git/docs/git-check-ref-format.html - // - // The only way to do this properly would be to shell out to - // git-check-ref-format, and as this is a fast sync function, - // we don't want to do that. Just let git fail if it turns - // out that the commit-ish is invalid. - // GH usernames cannot start with . or - - return /^[^:@%/\s.-][^:@%/\s]*[/][^:@\s/%]+(?:#.*)?$/.test(arg) -} +// 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|\\*' -function fixupUnqualifiedGist (giturl) { - // necessary for round-tripping gists - var parsed = url.parse(giturl) - if (parsed.protocol === 'gist:' && parsed.host && !parsed.path) { - return parsed.protocol + '/' + parsed.host - } else { - return giturl - } -} +var XRANGEPLAIN = R++ +src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + + '(?:' + src[PRERELEASE] + ')?' + + src[BUILD] + '?' + + ')?)?' -function parseGitUrl (giturl) { - var matched = giturl.match(/^([^@]+)@([^:/]+):[/]?((?:[^/]+[/])?[^/]+?)(?:[.]git)?(#.*)?$/) - if (!matched) { - var legacy = url.parse(giturl) - // If we don't have url.URL, then sorry, this is just not fixable. - // This affects Node <= 6.12. - if (legacy.auth && typeof url.URL === 'function') { - // git urls can be in the form of scp-style/ssh-connect strings, like - // git+ssh://user@host.com:some/path, which the legacy url parser - // supports, but WhatWG url.URL class does not. However, the legacy - // parser de-urlencodes the username and password, so something like - // https://user%3An%40me:p%40ss%3Aword@x.com/ becomes - // https://user:n@me:p@ss:word@x.com/ which is all kinds of wrong. - // Pull off just the auth and host, so we dont' get the confusing - // scp-style URL, then pass that to the WhatWG parser to get the - // auth properly escaped. - var authmatch = giturl.match(/[^@]+@[^:/]+/) - /* istanbul ignore else - this should be impossible */ - if (authmatch) { - var whatwg = new url.URL(authmatch[0]) - legacy.auth = whatwg.username || '' - if (whatwg.password) legacy.auth += ':' + whatwg.password - } - } - return legacy - } - return { - protocol: 'git+ssh:', - slashes: true, - auth: matched[1], - host: matched[2], - port: null, - hostname: matched[2], - hash: matched[4], - search: null, - query: null, - pathname: '/' + matched[3], - path: '/' + matched[3], - href: 'git+ssh://' + matched[1] + '@' + matched[2] + - '/' + matched[3] + (matched[4] || '') - } -} - - -/***/ }), - -/***/ "../../node_modules/human-signals/build/src/core.js": -/***/ (function(module, exports, __webpack_require__) { +var XRANGEPLAINLOOSE = R++ +src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[PRERELEASELOOSE] + ')?' + + src[BUILD] + '?' + + ')?)?' -"use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.SIGNALS=void 0; +var XRANGE = R++ +src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$' +var XRANGELOOSE = R++ +src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$' -const SIGNALS=[ -{ -name:"SIGHUP", -number:1, -action:"terminate", -description:"Terminal closed", -standard:"posix"}, +// 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])' -{ -name:"SIGINT", -number:2, -action:"terminate", -description:"User interruption with CTRL-C", -standard:"ansi"}, +// Tilde ranges. +// Meaning is "reasonably at or greater than" +var LONETILDE = R++ +src[LONETILDE] = '(?:~>?)' -{ -name:"SIGQUIT", -number:3, -action:"core", -description:"User interruption with CTRL-\\", -standard:"posix"}, +var TILDETRIM = R++ +src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+' +re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g') +var tildeTrimReplace = '$1~' -{ -name:"SIGILL", -number:4, -action:"core", -description:"Invalid machine instruction", -standard:"ansi"}, +var TILDE = R++ +src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$' +var TILDELOOSE = R++ +src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$' -{ -name:"SIGTRAP", -number:5, -action:"core", -description:"Debugger breakpoint", -standard:"posix"}, +// Caret ranges. +// Meaning is "at least and backwards compatible with" +var LONECARET = R++ +src[LONECARET] = '(?:\\^)' -{ -name:"SIGABRT", -number:6, -action:"core", -description:"Aborted", -standard:"ansi"}, +var CARETTRIM = R++ +src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+' +re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g') +var caretTrimReplace = '$1^' -{ -name:"SIGIOT", -number:6, -action:"core", -description:"Aborted", -standard:"bsd"}, +var CARET = R++ +src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$' +var CARETLOOSE = R++ +src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$' -{ -name:"SIGBUS", -number:7, -action:"core", -description: -"Bus error due to misaligned, non-existing address or paging error", -standard:"bsd"}, +// 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 + ')$|^$' -{ -name:"SIGEMT", -number:7, -action:"terminate", -description:"Command should be emulated but is not implemented", -standard:"other"}, +// 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] + ')' -{ -name:"SIGFPE", -number:8, -action:"core", -description:"Floating point arithmetic error", -standard:"ansi"}, +// this one has to use the /g flag +re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g') +var comparatorTrimReplace = '$1$2$3' -{ -name:"SIGKILL", -number:9, -action:"terminate", -description:"Forced termination", -standard:"posix", -forced:true}, +// 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*$' -{ -name:"SIGUSR1", -number:10, -action:"terminate", -description:"Application-specific signal", -standard:"posix"}, +var HYPHENRANGELOOSE = R++ +src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[XRANGEPLAINLOOSE] + ')' + + '\\s*$' -{ -name:"SIGSEGV", -number:11, -action:"core", -description:"Segmentation fault", -standard:"ansi"}, +// Star ranges basically just allow anything at all. +var STAR = R++ +src[STAR] = '(<|>)?=?\\s*\\*' -{ -name:"SIGUSR2", -number:12, -action:"terminate", -description:"Application-specific signal", -standard:"posix"}, +// 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]) + } +} -{ -name:"SIGPIPE", -number:13, -action:"terminate", -description:"Broken pipe or socket", -standard:"posix"}, +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } -{ -name:"SIGALRM", -number:14, -action:"terminate", -description:"Timeout or timer", -standard:"posix"}, + if (version instanceof SemVer) { + return version + } -{ -name:"SIGTERM", -number:15, -action:"terminate", -description:"Termination", -standard:"ansi"}, + if (typeof version !== 'string') { + return null + } -{ -name:"SIGSTKFLT", -number:16, -action:"terminate", -description:"Stack is empty or overflowed", -standard:"other"}, + if (version.length > MAX_LENGTH) { + return null + } -{ -name:"SIGCHLD", -number:17, -action:"ignore", -description:"Child process terminated, paused or unpaused", -standard:"posix"}, + var r = options.loose ? re[LOOSE] : re[FULL] + if (!r.test(version)) { + return null + } -{ -name:"SIGCLD", -number:17, -action:"ignore", -description:"Child process terminated, paused or unpaused", -standard:"other"}, + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} -{ -name:"SIGCONT", -number:18, -action:"unpause", -description:"Unpaused", -standard:"posix", -forced:true}, +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} -{ -name:"SIGSTOP", -number:19, -action:"pause", -description:"Paused", -standard:"posix", -forced:true}, +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} -{ -name:"SIGTSTP", -number:20, -action:"pause", -description:"Paused using CTRL-Z or \"suspend\"", -standard:"posix"}, +exports.SemVer = SemVer -{ -name:"SIGTTIN", -number:21, -action:"pause", -description:"Background process cannot read terminal input", -standard:"posix"}, +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } -{ -name:"SIGBREAK", -number:21, -action:"terminate", -description:"User interruption with CTRL-BREAK", -standard:"other"}, + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } -{ -name:"SIGTTOU", -number:22, -action:"pause", -description:"Background process cannot write to terminal output", -standard:"posix"}, + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } -{ -name:"SIGURG", -number:23, -action:"ignore", -description:"Socket received out-of-band data", -standard:"bsd"}, + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose -{ -name:"SIGXCPU", -number:24, -action:"core", -description:"Process timed out", -standard:"bsd"}, + var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]) -{ -name:"SIGXFSZ", -number:25, -action:"core", -description:"File too big", -standard:"bsd"}, + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } -{ -name:"SIGVTALRM", -number:26, -action:"terminate", -description:"Timeout or timer", -standard:"bsd"}, + this.raw = version -{ -name:"SIGPROF", -number:27, -action:"terminate", -description:"Timeout or timer", -standard:"bsd"}, + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] -{ -name:"SIGWINCH", -number:28, -action:"ignore", -description:"Terminal window size changed", -standard:"bsd"}, + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } -{ -name:"SIGIO", -number:29, -action:"terminate", -description:"I/O is available", -standard:"other"}, + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } -{ -name:"SIGPOLL", -number:29, -action:"terminate", -description:"Watched event", -standard:"other"}, + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } -{ -name:"SIGINFO", -number:29, -action:"ignore", -description:"Request for process information", -standard:"other"}, + // 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 + }) + } -{ -name:"SIGPWR", -number:30, -action:"terminate", -description:"Device running out of power", -standard:"systemv"}, + this.build = m[5] ? m[5].split('.') : [] + this.format() +} -{ -name:"SIGSYS", -number:31, -action:"core", -description:"Invalid system call", -standard:"other"}, +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} -{ -name:"SIGUNUSED", -number:31, -action:"terminate", -description:"Invalid system call", -standard:"other"}];exports.SIGNALS=SIGNALS; -//# sourceMappingURL=core.js.map +SemVer.prototype.toString = function () { + return this.version +} -/***/ }), +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } -/***/ "../../node_modules/human-signals/build/src/main.js": -/***/ (function(module, exports, __webpack_require__) { + return this.compareMain(other) || this.comparePre(other) +} -"use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.signalsByNumber=exports.signalsByName=void 0;var _os=__webpack_require__("os"); +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } -var _signals=__webpack_require__("../../node_modules/human-signals/build/src/signals.js"); -var _realtime=__webpack_require__("../../node_modules/human-signals/build/src/realtime.js"); + 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.options) + } + // 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 + } -const getSignalsByName=function(){ -const signals=(0,_signals.getSignals)(); -return signals.reduce(getSignalByName,{}); -}; + 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) +} -const getSignalByName=function( -signalByNameMemo, -{name,number,description,supported,action,forced,standard}) -{ -return{ -...signalByNameMemo, -[name]:{name,number,description,supported,action,forced,standard}}; +// 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 -const signalsByName=getSignalsByName();exports.signalsByName=signalsByName; + 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) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} -const getSignalsByNumber=function(){ -const signals=(0,_signals.getSignals)(); -const length=_realtime.SIGRTMAX+1; -const signalsA=Array.from({length},(value,number)=> -getSignalByNumber(number,signals)); +exports.compareIdentifiers = compareIdentifiers -return Object.assign({},...signalsA); -}; +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) -const getSignalByNumber=function(number,signals){ -const signal=findSignalByNumber(number,signals); + if (anum && bnum) { + a = +a + b = +b + } -if(signal===undefined){ -return{}; + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 } -const{name,description,supported,action,forced,standard}=signal; -return{ -[number]:{ -name, -number, -description, -supported, -action, -forced, -standard}}; - - -}; +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 +} -const findSignalByNumber=function(number,signals){ -const signal=signals.find(({name})=>_os.constants.signals[name]===number); +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} -if(signal!==undefined){ -return signal; +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) } -return signals.find(signalA=>signalA.number===number); -}; +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} -const signalsByNumber=getSignalsByNumber();exports.signalsByNumber=signalsByNumber; -//# sourceMappingURL=main.js.map +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) + }) +} -/***/ "../../node_modules/human-signals/build/src/realtime.js": -/***/ (function(module, exports, __webpack_require__) { +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.rcompare(a, b, loose) + }) +} -"use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.SIGRTMAX=exports.getRealtimeSignals=void 0; -const getRealtimeSignals=function(){ -const length=SIGRTMAX-SIGRTMIN+1; -return Array.from({length},getRealtimeSignal); -};exports.getRealtimeSignals=getRealtimeSignals; +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} -const getRealtimeSignal=function(value,index){ -return{ -name:`SIGRT${index+1}`, -number:SIGRTMIN+index, -action:"terminate", -description:"Application-specific signal (realtime)", -standard:"posix"}; +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 +} -const SIGRTMIN=34; -const SIGRTMAX=64;exports.SIGRTMAX=SIGRTMAX; -//# sourceMappingURL=realtime.js.map +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 +} -/***/ "../../node_modules/human-signals/build/src/signals.js": -/***/ (function(module, exports, __webpack_require__) { +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} -"use strict"; -Object.defineProperty(exports,"__esModule",{value:true});exports.getSignals=void 0;var _os=__webpack_require__("os"); +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b -var _core=__webpack_require__("../../node_modules/human-signals/build/src/core.js"); -var _realtime=__webpack_require__("../../node_modules/human-signals/build/src/realtime.js"); + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + case '': + case '=': + case '==': + return eq(a, b, loose) + case '!=': + return neq(a, b, loose) -const getSignals=function(){ -const realtimeSignals=(0,_realtime.getRealtimeSignals)(); -const signals=[..._core.SIGNALS,...realtimeSignals].map(normalizeSignal); -return signals; -};exports.getSignals=getSignals; + case '>': + return gt(a, b, loose) + case '>=': + return gte(a, b, loose) + case '<': + return lt(a, b, loose) + case '<=': + return lte(a, b, loose) + default: + throw new TypeError('Invalid operator: ' + op) + } +} +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } -const normalizeSignal=function({ -name, -number:defaultNumber, -description, -action, -forced=false, -standard}) -{ -const{ -signals:{[name]:constantSignal}}= -_os.constants; -const supported=constantSignal!==undefined; -const number=supported?constantSignal:defaultNumber; -return{name,number,description,supported,action,forced,standard}; -}; -//# sourceMappingURL=signals.js.map + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } -/***/ }), + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) -/***/ "../../node_modules/ignore/index.js": -/***/ (function(module, exports) { + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } -// A simple implementation of make-array -function makeArray (subject) { - return Array.isArray(subject) - ? subject - : [subject] + debug('comp', this) } -const EMPTY = '' -const SPACE = ' ' -const ESCAPE = '\\' -const REGEX_TEST_BLANK_LINE = /^\s+$/ -const REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/ -const REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/ -const REGEX_SPLITALL_CRLF = /\r?\n/g -// /foo, -// ./foo, -// ../foo, -// . -// .. -const REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/ - -const SLASH = '/' -const KEY_IGNORE = typeof Symbol !== 'undefined' - ? Symbol.for('node-ignore') - /* istanbul ignore next */ - : 'node-ignore' - -const define = (object, key, value) => - Object.defineProperty(object, key, {value}) +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var m = comp.match(r) -const REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } -// Sanitize the range of a regular expression -// The cases are complicated, see test cases for details -const sanitizeRange = range => range.replace( - REGEX_REGEXP_RANGE, - (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) - ? match - // Invalid range (out of order) which is ok for gitignore rules but - // fatal for JavaScript regular expression, so eliminate it. - : EMPTY -) + this.operator = m[1] + if (this.operator === '=') { + this.operator = '' + } -// See fixtures #59 -const cleanRangeBackSlash = slashes => { - const {length} = slashes - return slashes.slice(0, length - length % 2) + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } } -// > If the pattern ends with a slash, -// > it is removed for the purpose of the following description, -// > but it would only find a match with a directory. -// > In other words, foo/ will match a directory foo and paths underneath it, -// > but will not match a regular file or a symbolic link foo -// > (this is consistent with the way how pathspec works in general in Git). -// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`' -// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call -// you could use option `mark: true` with `glob` +Comparator.prototype.toString = function () { + return this.value +} -// '`foo/`' should not continue with the '`..`' -const REPLACERS = [ +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) - // > Trailing spaces are ignored unless they are quoted with backslash ("\") - [ - // (a\ ) -> (a ) - // (a ) -> (a) - // (a \ ) -> (a ) - /\\?\s+$/, - match => match.indexOf('\\') === 0 - ? SPACE - : EMPTY - ], + if (this.semver === ANY) { + return true + } - // replace (\ ) with ' ' - [ - /\\\s/g, - () => SPACE - ], + if (typeof version === 'string') { + version = new SemVer(version, this.options) + } - // Escape metacharacters - // which is written down by users but means special for regular expressions. + return cmp(version, this.operator, this.semver, this.options) +} - // > There are 12 characters with special meanings: - // > - the backslash \, - // > - the caret ^, - // > - the dollar sign $, - // > - the period or dot ., - // > - the vertical bar or pipe symbol |, - // > - the question mark ?, - // > - the asterisk or star *, - // > - the plus sign +, - // > - the opening parenthesis (, - // > - the closing parenthesis ), - // > - and the opening square bracket [, - // > - the opening curly brace {, - // > These special characters are often called "metacharacters". - [ - /[\\$.|*+(){^]/g, - match => `\\${match}` - ], +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } - [ - // > a question mark (?) matches a single character - /(?!\\)\?/g, - () => '[^/]' - ], + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } - // leading slash - [ + var rangeTmp - // > A leading slash matches the beginning of the pathname. - // > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c". - // A leading slash matches the beginning of the pathname - /^\//, - () => '^' - ], + if (this.operator === '') { + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } - // replace special metacharacter slash after the leading slash - [ - /\//g, - () => '\\/' - ], + 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, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) - [ - // > A leading "**" followed by a slash means match in all directories. - // > For example, "**/foo" matches file or directory "foo" anywhere, - // > the same as pattern "foo". - // > "**/foo/bar" matches file or directory "bar" anywhere that is directly - // > under directory "foo". - // Notice that the '*'s have been replaced as '\\*' - /^\^*\\\*\\\*\\\//, + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} - // '**/foo' <-> 'foo' - () => '^(?:.*\\/)?' - ], +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } - // starting - [ - // there will be no leading '/' - // (which has been replaced by section "leading slash") - // If starts with '**', adding a '^' to the regular expression also works - /^(?=[^^])/, - function startingReplacer () { - // If has a slash `/` at the beginning or middle - return !/\/(?!$)/.test(this) - // > Prior to 2.22.1 - // > If the pattern does not contain a slash /, - // > Git treats it as a shell glob pattern - // Actually, if there is only a trailing slash, - // git also treats it as a shell glob pattern + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } - // After 2.22.1 (compatible but clearer) - // > If there is a separator at the beginning or middle (or both) - // > of the pattern, then the pattern is relative to the directory - // > level of the particular .gitignore file itself. - // > Otherwise the pattern may also match at any level below - // > the .gitignore level. - ? '(?:^|\\/)' + if (range instanceof Comparator) { + return new Range(range.value, options) + } - // > Otherwise, Git treats the pattern as a shell glob suitable for - // > consumption by fnmatch(3) - : '^' - } - ], + if (!(this instanceof Range)) { + return new Range(range, options) + } - // two globstars - [ - // Use lookahead assertions so that we could match more than one `'/**'` - /\\\/\\\*\\\*(?=\\\/|$)/g, + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease - // Zero, one or several directories - // should not use '*', or it will be replaced by the next replacer + // 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 + }) - // Check if it is not the last `'/**'` - (_, index, str) => index + 6 < str.length + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + range) + } - // case: /**/ - // > A slash followed by two consecutive asterisks then a slash matches - // > zero or more directories. - // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on. - // '/**/' - ? '(?:\\/[^\\/]+)*' + this.format() +} - // case: /** - // > A trailing `"/**"` matches everything inside. +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} - // #21: everything inside but it should not include the current folder - : '\\/.+' - ], +Range.prototype.toString = function () { + return this.range +} - // intermediate wildcards - [ - // Never replace escaped '*' - // ignore rule '\*' will match the path '*' +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + range = range.trim() + // `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]) - // 'abc.*/' -> go - // 'abc.*' -> skip this rule - /(^|[^\\]+)\\\*(?=.+)/g, + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[TILDETRIM], tildeTrimReplace) - // '*.js' matches '.js' - // '*.js' doesn't match 'abc' - (_, p1) => `${p1}[^\\/]*` - ], + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[CARETTRIM], caretTrimReplace) - [ - // unescape, revert step 3 except for back slash - // For example, if a user escape a '\\*', - // after step 3, the result will be '\\\\\\*' - /\\\\\\(?=[$.|*+(){^])/g, - () => ESCAPE - ], + // normalize spaces + range = range.split(/\s+/).join(' ') - [ - // '\\\\' -> '\\' - /\\\\/g, - () => ESCAPE - ], + // At this point, the range is completely trimmed and + // ready to be split into comparators. - [ - // > The range notation, e.g. [a-zA-Z], - // > can be used to match one of the characters in a range. + var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.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, this.options) + }, this) - // `\` is escaped by step 3 - /(\\)?\[([^\]/]*?)(\\*)($|\])/g, - (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE - // '\\[bar]' -> '\\\\[bar\\]' - ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` - : close === ']' - ? endEscape.length % 2 === 0 - // A normal case, and it is a range notation - // '[bar]' - // '[bar\\\\]' - ? `[${sanitizeRange(range)}${endEscape}]` - // Invalid range notaton - // '[bar\\]' -> '[bar\\\\]' - : '[]' - : '[]' - ], + return set +} - // ending - [ - // 'js' will not match 'js.' - // 'ab' will not match 'abc' - /(?:[^*])$/, +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } - // WTF! - // https://git-scm.com/docs/gitignore - // changes in [2.22.1](https://git-scm.com/docs/gitignore/2.22.1) - // which re-fixes #24, #38 + 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, options) + }) + }) + }) + }) +} - // > If there is a separator at the end of the pattern then the pattern - // > will only match directories, otherwise the pattern can match both - // > files and directories. +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} - // 'js*' will not match 'a.js' - // 'js/' will not match 'a.js' - // 'js' will match 'a.js' and 'a.js/' - match => /\/$/.test(match) - // foo/ will not match 'foo' - ? `${match}$` - // foo matches 'foo' and 'foo/' - : `${match}(?=$|\\/$)` - ], +// 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, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} - // trailing wildcard - [ - /(\^|\\\/)?\\\*$/, - (_, p1) => { - const prefix = p1 - // '\^': - // '/*' does not match EMPTY - // '/*' does not match everything +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} - // '\\\/': - // 'abc/*' does not match 'abc/' - ? `${p1}[^/]+` +// ~, ~> --> * (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, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} - // 'a*' matches 'a' - // 'a*' matches 'aa' - : '[^/]*' +function replaceTilde (comp, options) { + var r = options.loose ? re[TILDELOOSE] : re[TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret - return `${prefix}(?=$|\\/$)` + 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) + 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' } - ], -] -// A simple cache, because an ignore rule only has only one certain meaning -const regexCache = Object.create(null) + debug('tilde return', ret) + return ret + }) +} -// @param {pattern} -const makeRegex = (pattern, negative, ignorecase) => { - const r = regexCache[pattern] - if (r) { - return r - } +// ^ --> * (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, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} - // const replacers = negative - // ? NEGATIVE_REPLACERS - // : POSITIVE_REPLACERS +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? re[CARETLOOSE] : re[CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret - const source = REPLACERS.reduce( - (prev, current) => prev.replace(current[0], current[1].bind(pattern)), - pattern - ) + 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 (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' + } + } - return regexCache[pattern] = ignorecase - ? new RegExp(source, 'i') - : new RegExp(source) + debug('caret return', ret) + return ret + }) } -const isString = subject => typeof subject === 'string' - -// > A blank line matches no files, so it can serve as a separator for readability. -const checkPattern = pattern => pattern - && isString(pattern) - && !REGEX_TEST_BLANK_LINE.test(pattern) +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} - // > A line starting with # serves as a comment. - && pattern.indexOf('#') !== 0 +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.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 -const splitPattern = pattern => pattern.split(REGEX_SPLITALL_CRLF) + if (gtlt === '=' && anyX) { + gtlt = '' + } -class IgnoreRule { - constructor ( - origin, - pattern, - negative, - regex - ) { - this.origin = origin - this.pattern = pattern - this.negative = negative - this.regex = regex - } -} + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 -const createRule = (pattern, ignorecase) => { - const origin = pattern - let negative = false + 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 { + 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 + } + } - // > An optional prefix "!" which negates the pattern; - if (pattern.indexOf('!') === 0) { - negative = true - pattern = pattern.substr(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' + } - pattern = pattern - // > Put a backslash ("\") in front of the first "!" for patterns that - // > begin with a literal "!", for example, `"\!important!.txt"`. - .replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, '!') - // > Put a backslash ("\") in front of the first hash for patterns that - // > begin with a hash. - .replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, '#') + debug('xRange return', ret) - const regex = makeRegex(pattern, negative, ignorecase) + return ret + }) +} - return new IgnoreRule( - origin, - pattern, - negative, - regex - ) +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(re[STAR], '') } -const throwError = (message, Ctor) => { - throw new Ctor(message) -} - -const checkPath = (path, originalPath, doThrow) => { - if (!isString(path)) { - return doThrow( - `path must be a string, but got \`${originalPath}\``, - TypeError - ) - } - - // We don't know if we should ignore EMPTY, so throw - if (!path) { - return doThrow(`path must not be empty`, TypeError) +// 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 } - // Check if it is a relative path - if (checkPath.isNotRelative(path)) { - const r = '`path.relative()`d' - return doThrow( - `path should be a ${r} string, but got "${originalPath}"`, - RangeError - ) + 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 true + return (from + ' ' + to).trim() } -const isNotRelative = path => REGEX_TEST_INVALID_PATH.test(path) - -checkPath.isNotRelative = isNotRelative -checkPath.convert = p => p - -class Ignore { - constructor ({ - ignorecase = true - } = {}) { - this._rules = [] - this._ignorecase = ignorecase - define(this, KEY_IGNORE, true) - this._initCache() +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false } - _initCache () { - this._ignoreCache = Object.create(null) - this._testCache = Object.create(null) + if (typeof version === 'string') { + version = new SemVer(version, this.options) } - _addPattern (pattern) { - // #32 - if (pattern && pattern[KEY_IGNORE]) { - this._rules = this._rules.concat(pattern._rules) - this._added = true - return + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true } + } + return false +} - if (checkPattern(pattern)) { - const rule = createRule(pattern, this._ignorecase) - this._added = true - this._rules.push(rule) +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false } } - // @param {Array | string | Ignore} pattern - add (pattern) { - this._added = false - - makeArray( - isString(pattern) - ? splitPattern(pattern) - : pattern - ).forEach(this._addPattern, this) + if (version.prerelease.length && !options.includePrerelease) { + // 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 (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } - // Some rules have just added to the ignore, - // making the behavior changed. - if (this._added) { - this._initCache() + 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 + } + } } - return this + // Version has a -pre, but it's not one of the ones we like. + return false } - // legacy - addPattern (pattern) { - return this.add(pattern) + return true +} + +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false } + return range.test(version) +} - // | ignored : unignored - // negative | 0:0 | 0:1 | 1:0 | 1:1 - // -------- | ------- | ------- | ------- | -------- - // 0 | TEST | TEST | SKIP | X - // 1 | TESTIF | SKIP | TEST | X +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} - // - SKIP: always skip - // - TEST: always test - // - TESTIF: only test if checkUnignored - // - X: that never happen +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} - // @param {boolean} whether should check if the path is unignored, - // setting `checkUnignored` to `false` could reduce additional - // path matching. +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) - // @returns {TestResult} true if a file is ignored - _testOne (path, checkUnignored) { - let ignored = false - let unignored = false + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } - this._rules.forEach(rule => { - const {negative} = rule - if ( - unignored === negative && ignored !== unignored - || negative && !ignored && !unignored && !checkUnignored - ) { - return - } + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } - const matched = rule.regex.test(path) + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] - if (matched) { - ignored = !negative - unignored = negative + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) } }) + } - return { - ignored, - unignored - } + if (minver && range.test(minver)) { + return minver } - // @returns {TestResult} - _test (originalPath, cache, checkUnignored, slices) { - const path = originalPath - // Supports nullable path - && checkPath.convert(originalPath) + return null +} - checkPath(path, originalPath, throwError) +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} - return this._t(path, cache, checkUnignored, slices) +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} + +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} + +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) + + 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 ">"') } - _t (path, cache, checkUnignored, slices) { - if (path in cache) { - return cache[path] - } + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } - if (!slices) { - // path/to/a.js - // ['path', 'to', 'a.js'] - slices = path.split(SLASH) - } + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. - slices.pop() + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] - // If the path has no parent directory, just test it - if (!slices.length) { - return cache[path] = this._testOne(path, checkUnignored) - } + var high = null + var low = null - const parent = this._t( - slices.join(SLASH) + SLASH, - cache, - checkUnignored, - slices - ) + 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, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) - // If the path contains a parent directory, check the parent first - return cache[path] = parent.ignored - // > It is not possible to re-include a file if a parent directory of - // > that file is excluded. - ? parent - : this._testOne(path, checkUnignored) - } + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } - ignores (path) { - return this._test(path, this._ignoreCache, false).ignored + // 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 +} - createFilter () { - return path => !this.ignores(path) +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} + +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version) { + if (version instanceof SemVer) { + return version } - filter (paths) { - return makeArray(paths).filter(this.createFilter()) + if (typeof version !== 'string') { + return null } - // @returns {TestResult} - test (path) { - return this._test(path, this._testCache, true) + var match = version.match(re[COERCE]) + + if (match == null) { + return null } + + return parse(match[1] + + '.' + (match[2] || '0') + + '.' + (match[3] || '0')) } -const factory = options => new Ignore(options) -const returnFalse = () => false +/***/ }), -const isPathValid = path => - checkPath(path && checkPath.convert(path), path, returnFalse) +/***/ "../../node_modules/normalize-path/index.js": +/***/ (function(module, exports) { -factory.isPathValid = isPathValid +/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */ -// Fixes typescript -factory.default = factory +module.exports = function(path, stripTrailing) { + if (typeof path !== 'string') { + throw new TypeError('expected path to be a string'); + } -module.exports = factory + if (path === '\\' || path === '/') return '/'; -// Windows -// -------------------------------------------------------------- -/* istanbul ignore if */ -if ( - // Detect `process` so that it can run in browsers. - typeof process !== 'undefined' - && ( - process.env && process.env.IGNORE_TEST_WIN32 - || process.platform === 'win32' - ) -) { - /* eslint no-control-regex: "off" */ - const makePosix = str => /^\\\\\?\\/.test(str) - || /["<>|\u0000-\u001F]+/u.test(str) - ? str - : str.replace(/\\/g, '/') + var len = path.length; + if (len <= 1) return path; - checkPath.convert = makePosix + // ensure that win32 namespaces has two leading slashes, so that the path is + // handled properly by the win32 version of path.parse() after being normalized + // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces + var prefix = ''; + if (len > 4 && path[3] === '\\') { + var ch = path[2]; + if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') { + path = path.slice(2); + prefix = '//'; + } + } - // 'C:\\foo' <- 'C:\\foo' has been converted to 'C:/' - // 'd:\\foo' - const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i - checkPath.isNotRelative = path => - REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path) - || isNotRelative(path) -} + var segs = path.split(/[/\\]+/); + if (stripTrailing !== false && segs[segs.length - 1] === '') { + segs.pop(); + } + return prefix + segs.join('/'); +}; /***/ }), -/***/ "../../node_modules/imurmurhash/imurmurhash.js": +/***/ "../../node_modules/npm-run-path/index.js": /***/ (function(module, exports, __webpack_require__) { -/** - * @preserve - * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013) - * - * @author Jens Taylor - * @see http://github.com/homebrewing/brauhaus-diff - * @author Gary Court - * @see http://github.com/garycourt/murmurhash-js - * @author Austin Appleby - * @see http://sites.google.com/site/murmurhash/ - */ -(function(){ - var cache; - - // Call this function without `new` to use the cached object (good for - // single-threaded environments), or with `new` to create a new object. - // - // @param {string} key A UTF-16 or ASCII string - // @param {number} seed An optional positive integer - // @return {object} A MurmurHash3 object for incremental hashing - function MurmurHash3(key, seed) { - var m = this instanceof MurmurHash3 ? this : cache; - m.reset(seed) - if (typeof key === 'string' && key.length > 0) { - m.hash(key); - } +"use strict"; - if (m !== this) { - return m; - } - }; +const path = __webpack_require__("path"); +const pathKey = __webpack_require__("../../node_modules/npm-run-path/node_modules/path-key/index.js"); - // Incrementally add a string to this hash - // - // @param {string} key A UTF-16 or ASCII string - // @return {object} this - MurmurHash3.prototype.hash = function(key) { - var h1, k1, i, top, len; +const npmRunPath = options => { + options = { + cwd: process.cwd(), + path: process.env[pathKey()], + execPath: process.execPath, + ...options + }; - len = key.length; - this.len += len; + let previous; + let cwdPath = path.resolve(options.cwd); + const result = []; - k1 = this.k1; - i = 0; - switch (this.rem) { - case 0: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) : 0; - case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 8 : 0; - case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 16 : 0; - case 3: - k1 ^= len > i ? (key.charCodeAt(i) & 0xff) << 24 : 0; - k1 ^= len > i ? (key.charCodeAt(i++) & 0xff00) >> 8 : 0; - } + while (previous !== cwdPath) { + result.push(path.join(cwdPath, 'node_modules/.bin')); + previous = cwdPath; + cwdPath = path.resolve(cwdPath, '..'); + } - this.rem = (len + this.rem) & 3; // & 3 is same as % 4 - len -= this.rem; - if (len > 0) { - h1 = this.h1; - while (1) { - k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff; - k1 = (k1 << 15) | (k1 >>> 17); - k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff; + // Ensure the running `node` binary is used + const execPathDir = path.resolve(options.cwd, options.execPath, '..'); + result.push(execPathDir); - h1 ^= k1; - h1 = (h1 << 13) | (h1 >>> 19); - h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff; + return result.concat(options.path).join(path.delimiter); +}; - if (i >= len) { - break; - } +module.exports = npmRunPath; +// TODO: Remove this for the next major release +module.exports.default = npmRunPath; - k1 = ((key.charCodeAt(i++) & 0xffff)) ^ - ((key.charCodeAt(i++) & 0xffff) << 8) ^ - ((key.charCodeAt(i++) & 0xffff) << 16); - top = key.charCodeAt(i++); - k1 ^= ((top & 0xff) << 24) ^ - ((top & 0xff00) >> 8); - } +module.exports.env = options => { + options = { + env: process.env, + ...options + }; - k1 = 0; - switch (this.rem) { - case 3: k1 ^= (key.charCodeAt(i + 2) & 0xffff) << 16; - case 2: k1 ^= (key.charCodeAt(i + 1) & 0xffff) << 8; - case 1: k1 ^= (key.charCodeAt(i) & 0xffff); - } + const env = {...options.env}; + const path = pathKey({env}); - this.h1 = h1; - } + options.path = env[path]; + env[path] = module.exports(options); - this.k1 = k1; - return this; - }; + return env; +}; - // Get the result of this hash - // - // @return {number} The 32-bit hash - MurmurHash3.prototype.result = function() { - var k1, h1; - - k1 = this.k1; - h1 = this.h1; - if (k1 > 0) { - k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff; - k1 = (k1 << 15) | (k1 >>> 17); - k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff; - h1 ^= k1; - } +/***/ }), - h1 ^= this.len; +/***/ "../../node_modules/npm-run-path/node_modules/path-key/index.js": +/***/ (function(module, exports, __webpack_require__) { - h1 ^= h1 >>> 16; - h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff; - h1 ^= h1 >>> 13; - h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff; - h1 ^= h1 >>> 16; +"use strict"; - return h1 >>> 0; - }; - // Reset the hash object for reuse - // - // @param {number} seed An optional positive integer - MurmurHash3.prototype.reset = function(seed) { - this.h1 = typeof seed === 'number' ? seed : 0; - this.rem = this.k1 = this.len = 0; - return this; - }; +const pathKey = (options = {}) => { + const environment = options.env || process.env; + const platform = options.platform || process.platform; - // A cached object to use. This can be safely used if you're in a single- - // threaded environment, otherwise you need to create new hashes to use. - cache = new MurmurHash3(); + if (platform !== 'win32') { + return 'PATH'; + } - if (true) { - module.exports = MurmurHash3; - } else {} -}()); + return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path'; +}; + +module.exports = pathKey; +// TODO: Remove this for the next major release +module.exports.default = pathKey; /***/ }), -/***/ "../../node_modules/inflight/inflight.js": +/***/ "../../node_modules/once/once.js": /***/ (function(module, exports, __webpack_require__) { var wrappy = __webpack_require__("../../node_modules/wrappy/wrappy.js") -var reqs = Object.create(null) -var once = __webpack_require__("../../node_modules/once/once.js") - -module.exports = wrappy(inflight) - -function inflight (key, cb) { - if (reqs[key]) { - reqs[key].push(cb) - return null - } else { - reqs[key] = [cb] - return makeres(key) - } -} +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) -function makeres (key) { - return once(function RES () { - var cbs = reqs[key] - var len = cbs.length - var args = slice(arguments) +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) - // XXX It's somewhat ambiguous whether a new callback added in this - // pass should be queued for later execution if something in the - // list of callbacks throws, or if it should just be discarded. - // However, it's such an edge case that it hardly matters, and either - // choice is likely as surprising as the other. - // As it happens, we do go ahead and schedule it for later execution. - try { - for (var i = 0; i < len; i++) { - cbs[i].apply(null, args) - } - } finally { - if (cbs.length > len) { - // added more in the interim. - // de-zalgo, just in case, but don't call again. - cbs.splice(0, len) - process.nextTick(function () { - RES.apply(null, args) - }) - } else { - delete reqs[key] - } - } + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true }) -} +}) -function slice (args) { - var length = args.length - var array = [] +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} - for (var i = 0; i < length; i++) array[i] = args[i] - return array +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f } /***/ }), -/***/ "../../node_modules/inherits/inherits.js": +/***/ "../../node_modules/onetime/index.js": /***/ (function(module, exports, __webpack_require__) { -try { - var util = __webpack_require__("util"); - /* istanbul ignore next */ - if (typeof util.inherits !== 'function') throw ''; - module.exports = util.inherits; -} catch (e) { - /* istanbul ignore next */ - module.exports = __webpack_require__("../../node_modules/inherits/inherits_browser.js"); -} - - -/***/ }), - -/***/ "../../node_modules/inherits/inherits_browser.js": -/***/ (function(module, exports) { +"use strict"; -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }) - } - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - if (superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } - } -} +const mimicFn = __webpack_require__("../../node_modules/mimic-fn/index.js"); +const calledFunctions = new WeakMap(); -/***/ }), +const onetime = (function_, options = {}) => { + if (typeof function_ !== 'function') { + throw new TypeError('Expected a function'); + } -/***/ "../../node_modules/is-accessor-descriptor/index.js": -/***/ (function(module, exports, __webpack_require__) { + let returnValue; + let callCount = 0; + const functionName = function_.displayName || function_.name || ''; -"use strict"; -/*! - * is-accessor-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ + const onetime = function (...arguments_) { + calledFunctions.set(onetime, ++callCount); + if (callCount === 1) { + returnValue = function_.apply(this, arguments_); + function_ = null; + } else if (options.throw === true) { + throw new Error(`Function \`${functionName}\` can only be called once`); + } + return returnValue; + }; -var typeOf = __webpack_require__("../../node_modules/kind-of/index.js"); + mimicFn(onetime, function_); + calledFunctions.set(onetime, callCount); -// accessor descriptor properties -var accessor = { - get: 'function', - set: 'function', - configurable: 'boolean', - enumerable: 'boolean' + return onetime; }; -function isAccessorDescriptor(obj, prop) { - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } +module.exports = onetime; +// TODO: Remove this for the next major release +module.exports.default = onetime; - if (typeOf(obj) !== 'object') { - return false; - } +module.exports.callCount = function_ => { + if (!calledFunctions.has(function_)) { + throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`); + } - if (has(obj, 'value') || has(obj, 'writable')) { - return false; - } + return calledFunctions.get(function_); +}; - if (!has(obj, 'get') || typeof obj.get !== 'function') { - return false; - } - // tldr: it's valid to have "set" be undefined - // "set" might be undefined if `Object.getOwnPropertyDescriptor` - // was used to get the value, and only `get` was defined by the user - if (has(obj, 'set') && typeof obj[key] !== 'function' && typeof obj[key] !== 'undefined') { - return false; - } +/***/ }), - for (var key in obj) { - if (!accessor.hasOwnProperty(key)) { - continue; - } +/***/ "../../node_modules/ora/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (typeOf(obj[key]) === accessor[key]) { - continue; - } +"use strict"; - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -} +const readline = __webpack_require__("readline"); +const chalk = __webpack_require__("../../node_modules/ora/node_modules/chalk/source/index.js"); +const cliCursor = __webpack_require__("../../node_modules/cli-cursor/index.js"); +const cliSpinners = __webpack_require__("../../node_modules/cli-spinners/index.js"); +const logSymbols = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/index.js"); +const stripAnsi = __webpack_require__("../../node_modules/strip-ansi/index.js"); +const wcwidth = __webpack_require__("../../node_modules/wcwidth/index.js"); +const isInteractive = __webpack_require__("../../node_modules/is-interactive/index.js"); +const MuteStream = __webpack_require__("../../node_modules/mute-stream/mute.js"); -function has(obj, key) { - return {}.hasOwnProperty.call(obj, key); -} +const TEXT = Symbol('text'); +const PREFIX_TEXT = Symbol('prefixText'); -/** - * Expose `isAccessorDescriptor` - */ +const ASCII_ETX_CODE = 0x03; // Ctrl+C emits this code -module.exports = isAccessorDescriptor; +class StdinDiscarder { + constructor() { + this.requests = 0; + this.mutedStream = new MuteStream(); + this.mutedStream.pipe(process.stdout); + this.mutedStream.mute(); -/***/ }), + const self = this; + this.ourEmit = function (event, data, ...args) { + const {stdin} = process; + if (self.requests > 0 || stdin.emit === self.ourEmit) { + if (event === 'keypress') { // Fixes readline behavior + return; + } -/***/ "../../node_modules/is-arrayish/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (event === 'data' && data.includes(ASCII_ETX_CODE)) { + process.emit('SIGINT'); + } -"use strict"; + Reflect.apply(self.oldEmit, this, [event, data, ...args]); + } else { + Reflect.apply(process.stdin.emit, this, [event, data, ...args]); + } + }; + } + start() { + this.requests++; -module.exports = function isArrayish(obj) { - if (!obj) { - return false; + if (this.requests === 1) { + this.realStart(); + } } - return obj instanceof Array || Array.isArray(obj) || - (obj.length >= 0 && obj.splice instanceof Function); -}; + stop() { + if (this.requests <= 0) { + throw new Error('`stop` called more times than `start`'); + } + this.requests--; -/***/ }), + if (this.requests === 0) { + this.realStop(); + } + } -/***/ "../../node_modules/is-buffer/index.js": -/***/ (function(module, exports) { + realStart() { + // No known way to make it work reliably on Windows + if (process.platform === 'win32') { + return; + } -/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh - * @license MIT - */ + this.rl = readline.createInterface({ + input: process.stdin, + output: this.mutedStream + }); -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) -} + this.rl.on('SIGINT', () => { + if (process.listenerCount('SIGINT') === 0) { + process.emit('SIGINT'); + } else { + this.rl.close(); + process.kill(process.pid, 'SIGINT'); + } + }); + } -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} + realStop() { + if (process.platform === 'win32') { + return; + } -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) + this.rl.close(); + this.rl = undefined; + } } +let stdinDiscarder; -/***/ }), - -/***/ "../../node_modules/is-core-module/core.json": -/***/ (function(module) { - -module.exports = JSON.parse("{\"assert\":true,\"node:assert\":[\">= 14.18 && < 15\",\">= 16\"],\"assert/strict\":\">= 15\",\"node:assert/strict\":\">= 16\",\"async_hooks\":\">= 8\",\"node:async_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"buffer_ieee754\":\">= 0.5 && < 0.9.7\",\"buffer\":true,\"node:buffer\":[\">= 14.18 && < 15\",\">= 16\"],\"child_process\":true,\"node:child_process\":[\">= 14.18 && < 15\",\">= 16\"],\"cluster\":\">= 0.5\",\"node:cluster\":[\">= 14.18 && < 15\",\">= 16\"],\"console\":true,\"node:console\":[\">= 14.18 && < 15\",\">= 16\"],\"constants\":true,\"node:constants\":[\">= 14.18 && < 15\",\">= 16\"],\"crypto\":true,\"node:crypto\":[\">= 14.18 && < 15\",\">= 16\"],\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"node:dgram\":[\">= 14.18 && < 15\",\">= 16\"],\"diagnostics_channel\":[\">= 14.17 && < 15\",\">= 15.1\"],\"node:diagnostics_channel\":[\">= 14.18 && < 15\",\">= 16\"],\"dns\":true,\"node:dns\":[\">= 14.18 && < 15\",\">= 16\"],\"dns/promises\":\">= 15\",\"node:dns/promises\":\">= 16\",\"domain\":\">= 0.7.12\",\"node:domain\":[\">= 14.18 && < 15\",\">= 16\"],\"events\":true,\"node:events\":[\">= 14.18 && < 15\",\">= 16\"],\"freelist\":\"< 6\",\"fs\":true,\"node:fs\":[\">= 14.18 && < 15\",\">= 16\"],\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"node:fs/promises\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_agent\":\">= 0.11.1\",\"node:_http_agent\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_client\":\">= 0.11.1\",\"node:_http_client\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_common\":\">= 0.11.1\",\"node:_http_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_incoming\":\">= 0.11.1\",\"node:_http_incoming\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_outgoing\":\">= 0.11.1\",\"node:_http_outgoing\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_server\":\">= 0.11.1\",\"node:_http_server\":[\">= 14.18 && < 15\",\">= 16\"],\"http\":true,\"node:http\":[\">= 14.18 && < 15\",\">= 16\"],\"http2\":\">= 8.8\",\"node:http2\":[\">= 14.18 && < 15\",\">= 16\"],\"https\":true,\"node:https\":[\">= 14.18 && < 15\",\">= 16\"],\"inspector\":\">= 8\",\"node:inspector\":[\">= 14.18 && < 15\",\">= 16\"],\"_linklist\":\"< 8\",\"module\":true,\"node:module\":[\">= 14.18 && < 15\",\">= 16\"],\"net\":true,\"node:net\":[\">= 14.18 && < 15\",\">= 16\"],\"node-inspect/lib/_inspect\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6 && < 12\",\"os\":true,\"node:os\":[\">= 14.18 && < 15\",\">= 16\"],\"path\":true,\"node:path\":[\">= 14.18 && < 15\",\">= 16\"],\"path/posix\":\">= 15.3\",\"node:path/posix\":\">= 16\",\"path/win32\":\">= 15.3\",\"node:path/win32\":\">= 16\",\"perf_hooks\":\">= 8.5\",\"node:perf_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"process\":\">= 1\",\"node:process\":[\">= 14.18 && < 15\",\">= 16\"],\"punycode\":\">= 0.5\",\"node:punycode\":[\">= 14.18 && < 15\",\">= 16\"],\"querystring\":true,\"node:querystring\":[\">= 14.18 && < 15\",\">= 16\"],\"readline\":true,\"node:readline\":[\">= 14.18 && < 15\",\">= 16\"],\"readline/promises\":\">= 17\",\"node:readline/promises\":\">= 17\",\"repl\":true,\"node:repl\":[\">= 14.18 && < 15\",\">= 16\"],\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"node:_stream_duplex\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_transform\":\">= 0.9.4\",\"node:_stream_transform\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_wrap\":\">= 1.4.1\",\"node:_stream_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_passthrough\":\">= 0.9.4\",\"node:_stream_passthrough\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_readable\":\">= 0.9.4\",\"node:_stream_readable\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_writable\":\">= 0.9.4\",\"node:_stream_writable\":[\">= 14.18 && < 15\",\">= 16\"],\"stream\":true,\"node:stream\":[\">= 14.18 && < 15\",\">= 16\"],\"stream/consumers\":\">= 16.7\",\"node:stream/consumers\":\">= 16.7\",\"stream/promises\":\">= 15\",\"node:stream/promises\":\">= 16\",\"stream/web\":\">= 16.5\",\"node:stream/web\":\">= 16.5\",\"string_decoder\":true,\"node:string_decoder\":[\">= 14.18 && < 15\",\">= 16\"],\"sys\":[\">= 0.4 && < 0.7\",\">= 0.8\"],\"node:sys\":[\">= 14.18 && < 15\",\">= 16\"],\"timers\":true,\"node:timers\":[\">= 14.18 && < 15\",\">= 16\"],\"timers/promises\":\">= 15\",\"node:timers/promises\":\">= 16\",\"_tls_common\":\">= 0.11.13\",\"node:_tls_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"node:_tls_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"tls\":true,\"node:tls\":[\">= 14.18 && < 15\",\">= 16\"],\"trace_events\":\">= 10\",\"node:trace_events\":[\">= 14.18 && < 15\",\">= 16\"],\"tty\":true,\"node:tty\":[\">= 14.18 && < 15\",\">= 16\"],\"url\":true,\"node:url\":[\">= 14.18 && < 15\",\">= 16\"],\"util\":true,\"node:util\":[\">= 14.18 && < 15\",\">= 16\"],\"util/types\":\">= 15.3\",\"node:util/types\":\">= 16\",\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/consarray\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/logreader\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8\":\">= 1\",\"node:v8\":[\">= 14.18 && < 15\",\">= 16\"],\"vm\":true,\"node:vm\":[\">= 14.18 && < 15\",\">= 16\"],\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"node:worker_threads\":[\">= 14.18 && < 15\",\">= 16\"],\"zlib\":\">= 0.5\",\"node:zlib\":[\">= 14.18 && < 15\",\">= 16\"]}"); +class Ora { + constructor(options) { + if (!stdinDiscarder) { + stdinDiscarder = new StdinDiscarder(); + } -/***/ }), + if (typeof options === 'string') { + options = { + text: options + }; + } -/***/ "../../node_modules/is-core-module/index.js": -/***/ (function(module, exports, __webpack_require__) { + this.options = { + text: '', + color: 'cyan', + stream: process.stderr, + discardStdin: true, + ...options + }; -"use strict"; + this.spinner = this.options.spinner; + this.color = this.options.color; + this.hideCursor = this.options.hideCursor !== false; + this.interval = this.options.interval || this.spinner.interval || 100; + this.stream = this.options.stream; + this.id = undefined; + this.isEnabled = typeof this.options.isEnabled === 'boolean' ? this.options.isEnabled : isInteractive({stream: this.stream}); -var has = __webpack_require__("../../node_modules/has/src/index.js"); + // Set *after* `this.stream` + this.text = this.options.text; + this.prefixText = this.options.prefixText; + this.linesToClear = 0; + this.indent = this.options.indent; + this.discardStdin = this.options.discardStdin; + this.isDiscardingStdin = false; + } -function specifierIncluded(current, specifier) { - var nodeParts = current.split('.'); - var parts = specifier.split(' '); - var op = parts.length > 1 ? parts[0] : '='; - var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); + get indent() { + return this._indent; + } - for (var i = 0; i < 3; ++i) { - var cur = parseInt(nodeParts[i] || 0, 10); - var ver = parseInt(versionParts[i] || 0, 10); - if (cur === ver) { - continue; // eslint-disable-line no-restricted-syntax, no-continue - } - if (op === '<') { - return cur < ver; - } - if (op === '>=') { - return cur >= ver; + set indent(indent = 0) { + if (!(indent >= 0 && Number.isInteger(indent))) { + throw new Error('The `indent` option must be an integer from 0 and up'); } - return false; - } - return op === '>='; -} -function matchesRange(current, range) { - var specifiers = range.split(/ ?&& ?/); - if (specifiers.length === 0) { - return false; + this._indent = indent; } - for (var i = 0; i < specifiers.length; ++i) { - if (!specifierIncluded(current, specifiers[i])) { - return false; + + _updateInterval(interval) { + if (interval !== undefined) { + this.interval = interval; } } - return true; -} -function versionIncluded(nodeVersion, specifierValue) { - if (typeof specifierValue === 'boolean') { - return specifierValue; + get spinner() { + return this._spinner; } - var current = typeof nodeVersion === 'undefined' - ? process.versions && process.versions.node - : nodeVersion; + set spinner(spinner) { + this.frameIndex = 0; - if (typeof current !== 'string') { - throw new TypeError(typeof nodeVersion === 'undefined' ? 'Unable to determine current node version' : 'If provided, a valid node version is required'); - } - - if (specifierValue && typeof specifierValue === 'object') { - for (var i = 0; i < specifierValue.length; ++i) { - if (matchesRange(current, specifierValue[i])) { - return true; + if (typeof spinner === 'object') { + if (spinner.frames === undefined) { + throw new Error('The given spinner must have a `frames` property'); } + + this._spinner = spinner; + } else if (process.platform === 'win32') { + this._spinner = cliSpinners.line; + } else if (spinner === undefined) { + // Set default spinner + this._spinner = cliSpinners.dots; + } else if (cliSpinners[spinner]) { + this._spinner = cliSpinners[spinner]; + } else { + throw new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/master/spinners.json for a full list.`); } - return false; + + this._updateInterval(this._spinner.interval); } - return matchesRange(current, specifierValue); -} -var data = __webpack_require__("../../node_modules/is-core-module/core.json"); + get text() { + return this[TEXT]; + } -module.exports = function isCore(x, nodeVersion) { - return has(data, x) && versionIncluded(nodeVersion, data[x]); -}; + get prefixText() { + return this[PREFIX_TEXT]; + } + get isSpinning() { + return this.id !== undefined; + } -/***/ }), + updateLineCount() { + const columns = this.stream.columns || 80; + const fullPrefixText = (typeof this[PREFIX_TEXT] === 'string') ? this[PREFIX_TEXT] + '-' : ''; + this.lineCount = stripAnsi(fullPrefixText + '--' + this[TEXT]).split('\n').reduce((count, line) => { + return count + Math.max(1, Math.ceil(wcwidth(line) / columns)); + }, 0); + } -/***/ "../../node_modules/is-data-descriptor/index.js": -/***/ (function(module, exports, __webpack_require__) { + set text(value) { + this[TEXT] = value; + this.updateLineCount(); + } -"use strict"; -/*! - * is-data-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ + set prefixText(value) { + this[PREFIX_TEXT] = value; + this.updateLineCount(); + } + + frame() { + const {frames} = this.spinner; + let frame = frames[this.frameIndex]; + if (this.color) { + frame = chalk[this.color](frame); + } + this.frameIndex = ++this.frameIndex % frames.length; + const fullPrefixText = (typeof this.prefixText === 'string' && this.prefixText !== '') ? this.prefixText + ' ' : ''; + const fullText = typeof this.text === 'string' ? ' ' + this.text : ''; -var typeOf = __webpack_require__("../../node_modules/kind-of/index.js"); + return fullPrefixText + frame + fullText; + } -module.exports = function isDataDescriptor(obj, prop) { - // data descriptor properties - var data = { - configurable: 'boolean', - enumerable: 'boolean', - writable: 'boolean' - }; + clear() { + if (!this.isEnabled || !this.stream.isTTY) { + return this; + } - if (typeOf(obj) !== 'object') { - return false; - } + for (let i = 0; i < this.linesToClear; i++) { + if (i > 0) { + this.stream.moveCursor(0, -1); + } - if (typeof prop === 'string') { - var val = Object.getOwnPropertyDescriptor(obj, prop); - return typeof val !== 'undefined'; - } + this.stream.clearLine(); + this.stream.cursorTo(this.indent); + } - if (!('value' in obj) && !('writable' in obj)) { - return false; - } + this.linesToClear = 0; - for (var key in obj) { - if (key === 'value') continue; + return this; + } - if (!data.hasOwnProperty(key)) { - continue; - } + render() { + this.clear(); + this.stream.write(this.frame()); + this.linesToClear = this.lineCount; - if (typeOf(obj[key]) === data[key]) { - continue; - } + return this; + } - if (typeof obj[key] !== 'undefined') { - return false; - } - } - return true; -}; + start(text) { + if (text) { + this.text = text; + } + if (!this.isEnabled) { + if (this.text) { + this.stream.write(`- ${this.text}\n`); + } -/***/ }), + return this; + } -/***/ "../../node_modules/is-descriptor/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (this.isSpinning) { + return this; + } -"use strict"; -/*! - * is-descriptor - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ + if (this.hideCursor) { + cliCursor.hide(this.stream); + } + if (this.discardStdin && process.stdin.isTTY) { + this.isDiscardingStdin = true; + stdinDiscarder.start(); + } + this.render(); + this.id = setInterval(this.render.bind(this), this.interval); -var typeOf = __webpack_require__("../../node_modules/kind-of/index.js"); -var isAccessor = __webpack_require__("../../node_modules/is-accessor-descriptor/index.js"); -var isData = __webpack_require__("../../node_modules/is-data-descriptor/index.js"); + return this; + } -module.exports = function isDescriptor(obj, key) { - if (typeOf(obj) !== 'object') { - return false; - } - if ('get' in obj) { - return isAccessor(obj, key); - } - return isData(obj, key); -}; + stop() { + if (!this.isEnabled) { + return this; + } + clearInterval(this.id); + this.id = undefined; + this.frameIndex = 0; + this.clear(); + if (this.hideCursor) { + cliCursor.show(this.stream); + } -/***/ }), + if (this.discardStdin && process.stdin.isTTY && this.isDiscardingStdin) { + stdinDiscarder.stop(); + this.isDiscardingStdin = false; + } -/***/ "../../node_modules/is-extendable/index.js": -/***/ (function(module, exports, __webpack_require__) { + return this; + } -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ + succeed(text) { + return this.stopAndPersist({symbol: logSymbols.success, text}); + } + fail(text) { + return this.stopAndPersist({symbol: logSymbols.error, text}); + } + warn(text) { + return this.stopAndPersist({symbol: logSymbols.warning, text}); + } -module.exports = function isExtendable(val) { - return typeof val !== 'undefined' && val !== null - && (typeof val === 'object' || typeof val === 'function'); -}; + info(text) { + return this.stopAndPersist({symbol: logSymbols.info, text}); + } + stopAndPersist(options = {}) { + const prefixText = options.prefixText || this.prefixText; + const fullPrefixText = (typeof prefixText === 'string' && prefixText !== '') ? prefixText + ' ' : ''; + const text = options.text || this.text; + const fullText = (typeof text === 'string') ? ' ' + text : ''; -/***/ }), + this.stop(); + this.stream.write(`${fullPrefixText}${options.symbol || ' '}${fullText}\n`); -/***/ "../../node_modules/is-extglob/index.js": -/***/ (function(module, exports) { + return this; + } +} -/*! - * is-extglob - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ +const oraFactory = function (options) { + return new Ora(options); +}; -module.exports = function isExtglob(str) { - if (typeof str !== 'string' || str === '') { - return false; - } +module.exports = oraFactory; - var match; - while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) { - if (match[2]) return true; - str = str.slice(match.index + match[0].length); - } +module.exports.promise = (action, options) => { + // eslint-disable-next-line promise/prefer-await-to-then + if (typeof action.then !== 'function') { + throw new TypeError('Parameter `action` must be a Promise'); + } - return false; + const spinner = new Ora(options); + spinner.start(); + + (async () => { + try { + await action; + spinner.succeed(); + } catch (_) { + spinner.fail(); + } + })(); + + return spinner; }; /***/ }), -/***/ "../../node_modules/is-glob/index.js": +/***/ "../../node_modules/ora/node_modules/chalk/source/index.js": /***/ (function(module, exports, __webpack_require__) { -/*! - * is-glob - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ - -var isExtglob = __webpack_require__("../../node_modules/is-extglob/index.js"); -var chars = { '{': '}', '(': ')', '[': ']'}; -var strictCheck = function(str) { - if (str[0] === '!') { - return true; - } - var index = 0; - var pipeIndex = -2; - var closeSquareIndex = -2; - var closeCurlyIndex = -2; - var closeParenIndex = -2; - var backSlashIndex = -2; - while (index < str.length) { - if (str[index] === '*') { - return true; - } +"use strict"; - if (str[index + 1] === '?' && /[\].+)]/.test(str[index])) { - return true; - } +const ansiStyles = __webpack_require__("../../node_modules/ansi-styles/index.js"); +const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__("../../node_modules/supports-color/index.js"); +const { + stringReplaceAll, + stringEncaseCRLFWithFirstIndex +} = __webpack_require__("../../node_modules/ora/node_modules/chalk/source/util.js"); - if (closeSquareIndex !== -1 && str[index] === '[' && str[index + 1] !== ']') { - if (closeSquareIndex < index) { - closeSquareIndex = str.indexOf(']', index); - } - if (closeSquareIndex > index) { - if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { - return true; - } - backSlashIndex = str.indexOf('\\', index); - if (backSlashIndex === -1 || backSlashIndex > closeSquareIndex) { - return true; - } - } - } +// `supportsColor.level` → `ansiStyles.color[name]` mapping +const levelMapping = [ + 'ansi', + 'ansi', + 'ansi256', + 'ansi16m' +]; - if (closeCurlyIndex !== -1 && str[index] === '{' && str[index + 1] !== '}') { - closeCurlyIndex = str.indexOf('}', index); - if (closeCurlyIndex > index) { - backSlashIndex = str.indexOf('\\', index); - if (backSlashIndex === -1 || backSlashIndex > closeCurlyIndex) { - return true; - } - } - } +const styles = Object.create(null); - if (closeParenIndex !== -1 && str[index] === '(' && str[index + 1] === '?' && /[:!=]/.test(str[index + 2]) && str[index + 3] !== ')') { - closeParenIndex = str.indexOf(')', index); - if (closeParenIndex > index) { - backSlashIndex = str.indexOf('\\', index); - if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { - return true; - } - } - } +const applyOptions = (object, options = {}) => { + if (options.level > 3 || options.level < 0) { + throw new Error('The `level` option should be an integer from 0 to 3'); + } - if (pipeIndex !== -1 && str[index] === '(' && str[index + 1] !== '|') { - if (pipeIndex < index) { - pipeIndex = str.indexOf('|', index); - } - if (pipeIndex !== -1 && str[pipeIndex + 1] !== ')') { - closeParenIndex = str.indexOf(')', pipeIndex); - if (closeParenIndex > pipeIndex) { - backSlashIndex = str.indexOf('\\', pipeIndex); - if (backSlashIndex === -1 || backSlashIndex > closeParenIndex) { - return true; - } - } - } - } + // Detect level if not set manually + const colorLevel = stdoutColor ? stdoutColor.level : 0; + object.level = options.level === undefined ? colorLevel : options.level; +}; - if (str[index] === '\\') { - var open = str[index + 1]; - index += 2; - var close = chars[open]; +class ChalkClass { + constructor(options) { + return chalkFactory(options); + } +} - if (close) { - var n = str.indexOf(close, index); - if (n !== -1) { - index = n + 1; - } - } +const chalkFactory = options => { + const chalk = {}; + applyOptions(chalk, options); - if (str[index] === '!') { - return true; - } - } else { - index++; - } - } - return false; -}; + chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_); -var relaxedCheck = function(str) { - if (str[0] === '!') { - return true; - } - var index = 0; - while (index < str.length) { - if (/[*?{}()[\]]/.test(str[index])) { - return true; - } + Object.setPrototypeOf(chalk, Chalk.prototype); + Object.setPrototypeOf(chalk.template, chalk); - if (str[index] === '\\') { - var open = str[index + 1]; - index += 2; - var close = chars[open]; + chalk.template.constructor = () => { + throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.'); + }; - if (close) { - var n = str.indexOf(close, index); - if (n !== -1) { - index = n + 1; - } - } + chalk.template.Instance = ChalkClass; - if (str[index] === '!') { - return true; - } - } else { - index++; - } - } - return false; + return chalk.template; }; -module.exports = function isGlob(str, options) { - if (typeof str !== 'string' || str === '') { - return false; - } - - if (isExtglob(str)) { - return true; - } - - var check = strictCheck; +function Chalk(options) { + return chalkFactory(options); +} - // optionally relax check - if (options && options.strict === false) { - check = relaxedCheck; - } +for (const [styleName, style] of Object.entries(ansiStyles)) { + styles[styleName] = { + get() { + const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty); + Object.defineProperty(this, styleName, {value: builder}); + return builder; + } + }; +} - return check(str); +styles.visible = { + get() { + const builder = createBuilder(this, this._styler, true); + Object.defineProperty(this, 'visible', {value: builder}); + return builder; + } }; +const usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256']; -/***/ }), +for (const model of usedModels) { + styles[model] = { + get() { + const {level} = this; + return function (...arguments_) { + const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler); + return createBuilder(this, styler, this._isEmpty); + }; + } + }; +} -/***/ "../../node_modules/is-interactive/index.js": -/***/ (function(module, exports, __webpack_require__) { +for (const model of usedModels) { + const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const {level} = this; + return function (...arguments_) { + const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler); + return createBuilder(this, styler, this._isEmpty); + }; + } + }; +} -"use strict"; +const proto = Object.defineProperties(() => {}, { + ...styles, + level: { + enumerable: true, + get() { + return this._generator.level; + }, + set(level) { + this._generator.level = level; + } + } +}); +const createStyler = (open, close, parent) => { + let openAll; + let closeAll; + if (parent === undefined) { + openAll = open; + closeAll = close; + } else { + openAll = parent.openAll + open; + closeAll = close + parent.closeAll; + } -module.exports = ({stream = process.stdout} = {}) => { - return Boolean( - stream && stream.isTTY && - process.env.TERM !== 'dumb' && - !('CI' in process.env) - ); + return { + open, + close, + openAll, + closeAll, + parent + }; }; +const createBuilder = (self, _styler, _isEmpty) => { + const builder = (...arguments_) => { + // Single argument is hot path, implicit coercion is faster than anything + // eslint-disable-next-line no-implicit-coercion + return applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' ')); + }; -/***/ }), + // `__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 -/***/ "../../node_modules/is-number/index.js": -/***/ (function(module, exports, __webpack_require__) { + builder._generator = self; + builder._styler = _styler; + builder._isEmpty = _isEmpty; -"use strict"; -/*! - * is-number - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ + return builder; +}; +const applyStyle = (self, string) => { + if (self.level <= 0 || !string) { + return self._isEmpty ? '' : string; + } + let styler = self._styler; -var typeOf = __webpack_require__("../../node_modules/is-number/node_modules/kind-of/index.js"); + if (styler === undefined) { + return string; + } -module.exports = function isNumber(num) { - var type = typeOf(num); + const {openAll, closeAll} = styler; + if (string.indexOf('\u001B') !== -1) { + while (styler !== undefined) { + // 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'. + string = stringReplaceAll(string, styler.close, styler.open); - if (type === 'string') { - if (!num.trim()) return false; - } else if (type !== 'number') { - return false; - } + styler = styler.parent; + } + } - return (num - num + 1) >= 0; -}; + // We can move both next actions out of loop, because remaining actions in loop won't have + // any/visible effect on parts we add here. 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 + const lfIndex = string.indexOf('\n'); + if (lfIndex !== -1) { + string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex); + } + return openAll + string + closeAll; +}; -/***/ }), +let template; +const chalkTag = (chalk, ...strings) => { + const [firstString] = strings; -/***/ "../../node_modules/is-number/node_modules/kind-of/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (!Array.isArray(firstString)) { + // If chalk() was called by itself or with a string, + // return the string itself as a string. + return strings.join(' '); + } -var isBuffer = __webpack_require__("../../node_modules/is-buffer/index.js"); -var toString = Object.prototype.toString; + const arguments_ = strings.slice(1); + const parts = [firstString.raw[0]]; -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ + for (let i = 1; i < firstString.length; i++) { + parts.push( + String(arguments_[i - 1]).replace(/[{}\\]/g, '\\$&'), + String(firstString.raw[i]) + ); + } -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } + if (template === undefined) { + template = __webpack_require__("../../node_modules/ora/node_modules/chalk/source/templates.js"); + } - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } + return template(chalk, parts.join('')); +}; - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } +Object.defineProperties(Chalk.prototype, styles); - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } +const chalk = Chalk(); // eslint-disable-line new-cap +chalk.supportsColor = stdoutColor; +chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap +chalk.stderr.supportsColor = stderrColor; - // other objects - var type = toString.call(val); +// For TypeScript +chalk.Level = { + None: 0, + Basic: 1, + Ansi256: 2, + TrueColor: 3, + 0: 'None', + 1: 'Basic', + 2: 'Ansi256', + 3: 'TrueColor' +}; - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } +module.exports = chalk; - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } +/***/ }), - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } +/***/ "../../node_modules/ora/node_modules/chalk/source/templates.js": +/***/ (function(module, exports, __webpack_require__) { - // must be a plain object - return 'object'; -}; +"use strict"; +const TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; +const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; +const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; +const ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi; -/***/ }), +const ESCAPES = new Map([ + ['n', '\n'], + ['r', '\r'], + ['t', '\t'], + ['b', '\b'], + ['f', '\f'], + ['v', '\v'], + ['0', '\0'], + ['\\', '\\'], + ['e', '\u001B'], + ['a', '\u0007'] +]); -/***/ "../../node_modules/is-odd/index.js": -/***/ (function(module, exports, __webpack_require__) { +function unescape(c) { + const u = c[0] === 'u'; + const bracket = c[1] === '{'; -"use strict"; -/*! - * is-odd - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ + if ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } + if (u && bracket) { + return String.fromCodePoint(parseInt(c.slice(2, -1), 16)); + } + return ESCAPES.get(c) || c; +} -var isNumber = __webpack_require__("../../node_modules/is-odd/node_modules/is-number/index.js"); +function parseArguments(name, arguments_) { + const results = []; + const chunks = arguments_.trim().split(/\s*,\s*/g); + let matches; -module.exports = function isOdd(i) { - if (!isNumber(i)) { - throw new TypeError('is-odd expects a number.'); - } - if (Number(i) !== Math.floor(i)) { - throw new RangeError('is-odd expects an integer.'); - } - return !!(~~i & 1); -}; + for (const chunk of chunks) { + const number = Number(chunk); + if (!Number.isNaN(number)) { + results.push(number); + } else if ((matches = chunk.match(STRING_REGEX))) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } + return results; +} -/***/ }), +function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; -/***/ "../../node_modules/is-odd/node_modules/is-number/index.js": -/***/ (function(module, exports, __webpack_require__) { + const results = []; + let matches; -"use strict"; -/*! - * is-number - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } + } + return results; +} -module.exports = function isNumber(num) { - var type = typeof num; +function buildStyle(chalk, styles) { + const enabled = {}; - if (type === 'string' || num instanceof String) { - // an empty string would be coerced to true with the below logic - if (!num.trim()) return false; - } else if (type !== 'number' && !(num instanceof Number)) { - return false; - } + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } + } - return (num - num + 1) >= 0; -}; + let current = chalk; + for (const [styleName, styles] of Object.entries(enabled)) { + if (!Array.isArray(styles)) { + continue; + } + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } -/***/ }), + current = styles.length > 0 ? current[styleName](...styles) : current[styleName]; + } -/***/ "../../node_modules/is-path-cwd/index.js": -/***/ (function(module, exports, __webpack_require__) { + return current; +} -"use strict"; +module.exports = (chalk, temporary) => { + const styles = []; + const chunks = []; + let chunk = []; -const path = __webpack_require__("path"); + // eslint-disable-next-line max-params + temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => { + if (escapeCharacter) { + chunk.push(unescape(escapeCharacter)); + } else if (style) { + const string = chunk.join(''); + chunk = []; + chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string)); + styles.push({inverse, styles: parseStyle(style)}); + } else if (close) { + if (styles.length === 0) { + throw new Error('Found extraneous } in Chalk template literal'); + } -module.exports = path_ => { - let cwd = process.cwd(); + chunks.push(buildStyle(chalk, styles)(chunk.join(''))); + chunk = []; + styles.pop(); + } else { + chunk.push(character); + } + }); - path_ = path.resolve(path_); + chunks.push(chunk.join('')); - if (process.platform === 'win32') { - cwd = cwd.toLowerCase(); - path_ = path_.toLowerCase(); + if (styles.length > 0) { + const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`; + throw new Error(errMsg); } - return path_ === cwd; + return chunks.join(''); }; /***/ }), -/***/ "../../node_modules/is-path-inside/index.js": +/***/ "../../node_modules/ora/node_modules/chalk/source/util.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -const path = __webpack_require__("path"); - -module.exports = (childPath, parentPath) => { - childPath = path.resolve(childPath); - parentPath = path.resolve(parentPath); - if (process.platform === 'win32') { - childPath = childPath.toLowerCase(); - parentPath = parentPath.toLowerCase(); +const stringReplaceAll = (string, substring, replacer) => { + let index = string.indexOf(substring); + if (index === -1) { + return string; } - if (childPath === parentPath) { - return false; - } + const substringLength = substring.length; + let endIndex = 0; + let returnValue = ''; + do { + returnValue += string.substr(endIndex, index - endIndex) + substring + replacer; + endIndex = index + substringLength; + index = string.indexOf(substring, endIndex); + } while (index !== -1); - childPath += path.sep; - parentPath += path.sep; + returnValue += string.substr(endIndex); + return returnValue; +}; - return childPath.startsWith(parentPath); +const stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => { + let endIndex = 0; + let returnValue = ''; + do { + const gotCR = string[index - 1] === '\r'; + returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\r\n' : '\n') + postfix; + endIndex = index + 1; + index = string.indexOf('\n', endIndex); + } while (index !== -1); + + returnValue += string.substr(endIndex); + return returnValue; +}; + +module.exports = { + stringReplaceAll, + stringEncaseCRLFWithFirstIndex }; /***/ }), -/***/ "../../node_modules/is-plain-obj/index.js": +/***/ "../../node_modules/ora/node_modules/has-flag/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - -module.exports = value => { - if (Object.prototype.toString.call(value) !== '[object Object]') { - return false; - } - - const prototype = Object.getPrototypeOf(value); - return prototype === null || prototype === Object.prototype; +module.exports = (flag, argv) => { + argv = argv || process.argv; + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const pos = argv.indexOf(prefix + flag); + const terminatorPos = argv.indexOf('--'); + return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); }; /***/ }), -/***/ "../../node_modules/is-plain-object/index.js": +/***/ "../../node_modules/ora/node_modules/log-symbols/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ +const chalk = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/index.js"); +const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color'; -var isObject = __webpack_require__("../../node_modules/isobject/index.js"); +const main = { + info: chalk.blue('ℹ'), + success: chalk.green('✔'), + warning: chalk.yellow('⚠'), + error: chalk.red('✖') +}; -function isObjectObject(o) { - return isObject(o) === true - && Object.prototype.toString.call(o) === '[object Object]'; -} +const fallbacks = { + info: chalk.blue('i'), + success: chalk.green('√'), + warning: chalk.yellow('‼'), + error: chalk.red('×') +}; -module.exports = function isPlainObject(o) { - var ctor,prot; +module.exports = isSupported ? main : fallbacks; - if (isObjectObject(o) === false) return false; - // If has modified constructor - ctor = o.constructor; - if (typeof ctor !== 'function') return false; +/***/ }), - // If has modified prototype - prot = ctor.prototype; - if (isObjectObject(prot) === false) return false; +/***/ "../../node_modules/ora/node_modules/log-symbols/node_modules/ansi-styles/index.js": +/***/ (function(module, exports, __webpack_require__) { - // If constructor does not have an Object-specific method - if (prot.hasOwnProperty('isPrototypeOf') === false) { - return false; - } +"use strict"; +/* WEBPACK VAR INJECTION */(function(module) { +const colorConvert = __webpack_require__("../../node_modules/color-convert/index.js"); - // Most likely a plain Object - return true; +const wrapAnsi16 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${code + offset}m`; }; +const wrapAnsi256 = (fn, offset) => function () { + const code = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};5;${code}m`; +}; -/***/ }), +const wrapAnsi16m = (fn, offset) => function () { + const rgb = fn.apply(colorConvert, arguments); + return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; +}; -/***/ "../../node_modules/is-stream/index.js": -/***/ (function(module, exports, __webpack_require__) { +function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + // 21 isn't widely supported and 22 does the same thing + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + gray: [90, 39], -"use strict"; + // Bright color + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + // Bright color + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; -const isStream = stream => - stream !== null && - typeof stream === 'object' && - typeof stream.pipe === 'function'; + // Fix humans + styles.color.grey = styles.color.gray; -isStream.writable = stream => - isStream(stream) && - stream.writable !== false && - typeof stream._write === 'function' && - typeof stream._writableState === 'object'; + for (const groupName of Object.keys(styles)) { + const group = styles[groupName]; -isStream.readable = stream => - isStream(stream) && - stream.readable !== false && - typeof stream._read === 'function' && - typeof stream._readableState === 'object'; + for (const styleName of Object.keys(group)) { + const style = group[styleName]; -isStream.duplex = stream => - isStream.writable(stream) && - isStream.readable(stream); + styles[styleName] = { + open: `\u001B[${style[0]}m`, + close: `\u001B[${style[1]}m` + }; -isStream.transform = stream => - isStream.duplex(stream) && - typeof stream._transform === 'function' && - typeof stream._transformState === 'object'; + group[styleName] = styles[styleName]; -module.exports = isStream; + codes.set(style[0], style[1]); + } + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); -/***/ }), + Object.defineProperty(styles, 'codes', { + value: codes, + enumerable: false + }); + } -/***/ "../../node_modules/is-windows/index.js": -/***/ (function(module, exports, __webpack_require__) { + const ansi2ansi = n => n; + const rgb2rgb = (r, g, b) => [r, g, b]; -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - * is-windows - * - * Copyright © 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ + styles.color.close = '\u001B[39m'; + styles.bgColor.close = '\u001B[49m'; -(function(factory) { - if (exports && typeof exports === 'object' && typeof module !== 'undefined') { - module.exports = factory(); - } else if (true) { - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else {} -})(function() { - 'use strict'; - return function isWindows() { - return process && (process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE)); - }; -}); + styles.color.ansi = { + ansi: wrapAnsi16(ansi2ansi, 0) + }; + styles.color.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 0) + }; + styles.color.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 0) + }; + styles.bgColor.ansi = { + ansi: wrapAnsi16(ansi2ansi, 10) + }; + styles.bgColor.ansi256 = { + ansi256: wrapAnsi256(ansi2ansi, 10) + }; + styles.bgColor.ansi16m = { + rgb: wrapAnsi16m(rgb2rgb, 10) + }; -/***/ }), + for (let key of Object.keys(colorConvert)) { + if (typeof colorConvert[key] !== 'object') { + continue; + } -/***/ "../../node_modules/isexe/index.js": -/***/ (function(module, exports, __webpack_require__) { + const suite = colorConvert[key]; -var fs = __webpack_require__("fs") -var core -if (process.platform === 'win32' || global.TESTING_WINDOWS) { - core = __webpack_require__("../../node_modules/isexe/windows.js") -} else { - core = __webpack_require__("../../node_modules/isexe/mode.js") -} + if (key === 'ansi16') { + key = 'ansi'; + } -module.exports = isexe -isexe.sync = sync + if ('ansi16' in suite) { + styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); + styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); + } -function isexe (path, options, cb) { - if (typeof options === 'function') { - cb = options - options = {} - } + if ('ansi256' in suite) { + styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); + styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); + } - if (!cb) { - if (typeof Promise !== 'function') { - throw new TypeError('callback not provided') - } - - return new Promise(function (resolve, reject) { - isexe(path, options || {}, function (er, is) { - if (er) { - reject(er) - } else { - resolve(is) - } - }) - }) - } + if ('rgb' in suite) { + styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); + styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); + } + } - core(path, options || {}, function (er, is) { - // ignore EACCES because that just means we aren't allowed to run it - if (er) { - if (er.code === 'EACCES' || options && options.ignoreErrors) { - er = null - is = false - } - } - cb(er, is) - }) + return styles; } -function sync (path, options) { - // my kingdom for a filtered catch - try { - return core.sync(path, options || {}) - } catch (er) { - if (options && options.ignoreErrors || er.code === 'EACCES') { - return false - } else { - throw er - } - } -} +// Make the export immutable +Object.defineProperty(module, 'exports', { + enumerable: true, + get: assembleStyles +}); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("../../node_modules/webpack/buildin/module.js")(module))) /***/ }), -/***/ "../../node_modules/isexe/mode.js": +/***/ "../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/index.js": /***/ (function(module, exports, __webpack_require__) { -module.exports = isexe -isexe.sync = sync - -var fs = __webpack_require__("fs") +"use strict"; -function isexe (path, options, cb) { - fs.stat(path, function (er, stat) { - cb(er, er ? false : checkStat(stat, options)) - }) -} +const escapeStringRegexp = __webpack_require__("../../node_modules/escape-string-regexp/index.js"); +const ansiStyles = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/node_modules/ansi-styles/index.js"); +const stdoutColor = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/node_modules/supports-color/index.js").stdout; -function sync (path, options) { - return checkStat(fs.statSync(path), options) -} +const template = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/templates.js"); -function checkStat (stat, options) { - return stat.isFile() && checkMode(stat, options) -} +const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); -function checkMode (stat, options) { - var mod = stat.mode - var uid = stat.uid - var gid = stat.gid +// `supportsColor.level` → `ansiStyles.color[name]` mapping +const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; - var myUid = options.uid !== undefined ? - options.uid : process.getuid && process.getuid() - var myGid = options.gid !== undefined ? - options.gid : process.getgid && process.getgid() +// `color-convert` models to exclude from the Chalk API due to conflicts and such +const skipModels = new Set(['gray']); - var u = parseInt('100', 8) - var g = parseInt('010', 8) - var o = parseInt('001', 8) - var ug = u | g +const styles = Object.create(null); - var ret = (mod & o) || - (mod & g) && gid === myGid || - (mod & u) && uid === myUid || - (mod & ug) && myUid === 0 +function applyOptions(obj, options) { + options = options || {}; - return ret + // 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); -/***/ }), - -/***/ "../../node_modules/isexe/windows.js": -/***/ (function(module, exports, __webpack_require__) { - -module.exports = isexe -isexe.sync = sync + chalk.template = function () { + const args = [].slice.call(arguments); + return chalkTag.apply(null, [chalk.template].concat(args)); + }; -var fs = __webpack_require__("fs") + Object.setPrototypeOf(chalk, Chalk.prototype); + Object.setPrototypeOf(chalk.template, chalk); -function checkPathExt (path, options) { - var pathext = options.pathExt !== undefined ? - options.pathExt : process.env.PATHEXT + chalk.template.constructor = Chalk; - if (!pathext) { - return true - } + return chalk.template; + } - pathext = pathext.split(';') - if (pathext.indexOf('') !== -1) { - return true - } - for (var i = 0; i < pathext.length; i++) { - var p = pathext[i].toLowerCase() - if (p && path.substr(-p.length).toLowerCase() === p) { - return true - } - } - return false + applyOptions(this, options); } -function checkStat (stat, path, options) { - if (!stat.isSymbolicLink() && !stat.isFile()) { - return false - } - return checkPathExt(path, options) +// Use bright blue on Windows as the normal blue color is illegible +if (isSimpleWindowsTerm) { + ansiStyles.blue.open = '\u001B[94m'; } -function isexe (path, options, cb) { - fs.stat(path, function (er, stat) { - cb(er, er ? false : checkStat(stat, path, options)) - }) -} +for (const key of Object.keys(ansiStyles)) { + ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); -function sync (path, options) { - return checkStat(fs.statSync(path), path, options) + 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; + } -/***/ "../../node_modules/isobject/index.js": -/***/ (function(module, exports, __webpack_require__) { + 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); + }; + } + }; +} -"use strict"; -/*! - * isobject - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */ +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); -module.exports = function isObject(val) { - return val != null && typeof val === 'object' && Array.isArray(val) === false; -}; +function build(_styles, _empty, key) { + const builder = function () { + return applyStyle.apply(builder, arguments); + }; + builder._styles = _styles; + builder._empty = _empty; -/***/ }), + const self = this; -/***/ "../../node_modules/json-parse-better-errors/index.js": -/***/ (function(module, exports, __webpack_require__) { + Object.defineProperty(builder, 'level', { + enumerable: true, + get() { + return self.level; + }, + set(level) { + self.level = level; + } + }); -"use strict"; + 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'; -module.exports = parseJson -function parseJson (txt, reviver, context) { - context = context || 20 - try { - return JSON.parse(txt, reviver) - } catch (e) { - if (typeof txt !== 'string') { - const isEmptyArray = Array.isArray(txt) && txt.length === 0 - const errorMessage = 'Cannot parse ' + - (isEmptyArray ? 'an empty array' : String(txt)) - throw new TypeError(errorMessage) - } - const syntaxErr = e.message.match(/^Unexpected token.*position\s+(\d+)/i) - const errIdx = syntaxErr - ? +syntaxErr[1] - : e.message.match(/^Unexpected end of JSON.*/i) - ? txt.length - 1 - : null - if (errIdx != null) { - const start = errIdx <= context - ? 0 - : errIdx - context - const end = errIdx + context >= txt.length - ? txt.length - : errIdx + context - e.message += ` while parsing near '${ - start === 0 ? '' : '...' - }${txt.slice(start, end)}${ - end === txt.length ? '' : '...' - }'` - } else { - e.message += ` while parsing '${txt.slice(0, context * 2)}'` - } - throw e - } + // `__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 ''; + } -/***/ "../../node_modules/junk/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (argsLen > 1) { + // Don't slice `arguments`, it prevents V8 optimizations + for (let a = 1; a < argsLen; a++) { + str += ' ' + args[a]; + } + } -"use strict"; + 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; -const blacklist = [ - // # All - '^npm-debug\\.log$', // Error log for npm - '^\\..*\\.swp$', // Swap file for vim state + // 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}`); + } - // # macOS - '^\\.DS_Store$', // Stores custom folder attributes - '^\\.AppleDouble$', // Stores additional file resources - '^\\.LSOverride$', // Contains the absolute path to the app to be used - '^Icon\\r$', // Custom Finder icon: http://superuser.com/questions/298785/icon-file-on-os-x-desktop - '^\\._.*', // Thumbnail - '^\\.Spotlight-V100(?:$|\\/)', // Directory that might appear on external disk - '\\.Trashes', // File that might appear on external disk - '^__MACOSX$', // Resource fork + // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue + ansiStyles.dim.open = originalDim; - // # Linux - '~$', // Backup file + return str; +} - // # Windows - '^Thumbs\\.db$', // Image file cache - '^ehthumbs\\.db$', // Folder config file - '^Desktop\\.ini$', // Stores custom folder attributes - '@eaDir$' // Synology Diskstation "hidden" folder where the server stores thumbnails -]; +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(' '); + } -exports.re = () => { - throw new Error('`junk.re` was renamed to `junk.regex`'); -}; + const args = [].slice.call(arguments, 2); + const parts = [strings.raw[0]]; -exports.regex = new RegExp(blacklist.join('|')); + for (let i = 1; i < strings.length; i++) { + parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); + parts.push(String(strings.raw[i])); + } -exports.is = filename => exports.regex.test(filename); + return template(chalk, parts.join('')); +} -exports.not = filename => !exports.is(filename); +Object.defineProperties(Chalk.prototype, styles); -// TODO: Remove this for the next major release -exports.default = module.exports; +module.exports = Chalk(); // eslint-disable-line new-cap +module.exports.supportsColor = stdoutColor; +module.exports.default = module.exports; // For TypeScript /***/ }), -/***/ "../../node_modules/kind-of/index.js": -/***/ (function(module, exports) { +/***/ "../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/templates.js": +/***/ (function(module, exports, __webpack_require__) { -var toString = Object.prototype.toString; +"use strict"; -module.exports = function kindOf(val) { - if (val === void 0) return 'undefined'; - if (val === null) return 'null'; +const TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; +const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; +const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; +const ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi; - var type = typeof val; - if (type === 'boolean') return 'boolean'; - if (type === 'string') return 'string'; - if (type === 'number') return 'number'; - if (type === 'symbol') return 'symbol'; - if (type === 'function') { - return isGeneratorFn(val) ? 'generatorfunction' : 'function'; - } +const ESCAPES = new Map([ + ['n', '\n'], + ['r', '\r'], + ['t', '\t'], + ['b', '\b'], + ['f', '\f'], + ['v', '\v'], + ['0', '\0'], + ['\\', '\\'], + ['e', '\u001B'], + ['a', '\u0007'] +]); - if (isArray(val)) return 'array'; - if (isBuffer(val)) return 'buffer'; - if (isArguments(val)) return 'arguments'; - if (isDate(val)) return 'date'; - if (isError(val)) return 'error'; - if (isRegexp(val)) return 'regexp'; +function unescape(c) { + if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } - switch (ctorName(val)) { - case 'Symbol': return 'symbol'; - case 'Promise': return 'promise'; + return ESCAPES.get(c) || c; +} - // Set, Map, WeakSet, WeakMap - case 'WeakMap': return 'weakmap'; - case 'WeakSet': return 'weakset'; - case 'Map': return 'map'; - case 'Set': return 'set'; +function parseArguments(name, args) { + const results = []; + const chunks = args.trim().split(/\s*,\s*/g); + let matches; - // 8-bit typed arrays - case 'Int8Array': return 'int8array'; - case 'Uint8Array': return 'uint8array'; - case 'Uint8ClampedArray': return 'uint8clampedarray'; + for (const chunk of chunks) { + if (!isNaN(chunk)) { + results.push(Number(chunk)); + } else if ((matches = chunk.match(STRING_REGEX))) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } - // 16-bit typed arrays - case 'Int16Array': return 'int16array'; - case 'Uint16Array': return 'uint16array'; + return results; +} - // 32-bit typed arrays - case 'Int32Array': return 'int32array'; - case 'Uint32Array': return 'uint32array'; - case 'Float32Array': return 'float32array'; - case 'Float64Array': return 'float64array'; - } +function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; - if (isGeneratorObj(val)) { - return 'generator'; - } + const results = []; + let matches; - // Non-plain objects - type = toString.call(val); - switch (type) { - case '[object Object]': return 'object'; - // iterators - case '[object Map Iterator]': return 'mapiterator'; - case '[object Set Iterator]': return 'setiterator'; - case '[object String Iterator]': return 'stringiterator'; - case '[object Array Iterator]': return 'arrayiterator'; - } + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; - // other - return type.slice(8, -1).toLowerCase().replace(/\s/g, ''); -}; + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } + } -function ctorName(val) { - return typeof val.constructor === 'function' ? val.constructor.name : null; + return results; } -function isArray(val) { - if (Array.isArray) return Array.isArray(val); - return val instanceof Array; -} +function buildStyle(chalk, styles) { + const enabled = {}; -function isError(val) { - return val instanceof Error || (typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number'); -} + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } + } -function isDate(val) { - if (val instanceof Date) return true; - return typeof val.toDateString === 'function' - && typeof val.getDate === 'function' - && typeof val.setDate === 'function'; -} + let current = chalk; + for (const styleName of Object.keys(enabled)) { + if (Array.isArray(enabled[styleName])) { + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } -function isRegexp(val) { - if (val instanceof RegExp) return true; - return typeof val.flags === 'string' - && typeof val.ignoreCase === 'boolean' - && typeof val.multiline === 'boolean' - && typeof val.global === 'boolean'; -} + if (enabled[styleName].length > 0) { + current = current[styleName].apply(current, enabled[styleName]); + } else { + current = current[styleName]; + } + } + } -function isGeneratorFn(name, val) { - return ctorName(name) === 'GeneratorFunction'; + return current; } -function isGeneratorObj(val) { - return typeof val.throw === 'function' - && typeof val.return === 'function' - && typeof val.next === 'function'; -} +module.exports = (chalk, tmp) => { + const styles = []; + const chunks = []; + let chunk = []; -function isArguments(val) { - try { - if (typeof val.length === 'number' && typeof val.callee === 'function') { - return true; - } - } catch (err) { - if (err.message.indexOf('callee') !== -1) { - return true; - } - } - return false; -} + // eslint-disable-next-line max-params + tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => { + if (escapeChar) { + chunk.push(unescape(escapeChar)); + } else if (style) { + const str = chunk.join(''); + chunk = []; + chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str)); + styles.push({inverse, styles: parseStyle(style)}); + } else if (close) { + if (styles.length === 0) { + throw new Error('Found extraneous } in Chalk template literal'); + } -/** - * If you need to support Safari 5-7 (8-10 yr-old browser), - * take a look at https://github.com/feross/is-buffer - */ + chunks.push(buildStyle(chalk, styles)(chunk.join(''))); + chunk = []; + styles.pop(); + } else { + chunk.push(chr); + } + }); -function isBuffer(val) { - if (val.constructor && typeof val.constructor.isBuffer === 'function') { - return val.constructor.isBuffer(val); - } - return false; -} + chunks.push(chunk.join('')); + + if (styles.length > 0) { + const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`; + throw new Error(errMsg); + } + + return chunks.join(''); +}; /***/ }), -/***/ "../../node_modules/lines-and-columns/dist/index.mjs": -/***/ (function(__webpack_module__, __webpack_exports__, __webpack_require__) { +/***/ "../../node_modules/ora/node_modules/log-symbols/node_modules/supports-color/index.js": +/***/ (function(module, exports, __webpack_require__) { "use strict"; -__webpack_require__.r(__webpack_exports__); -var LF = '\n'; -var CR = '\r'; -var LinesAndColumns = (function () { - function LinesAndColumns(string) { - this.string = string; - var offsets = [0]; - for (var offset = 0; offset < string.length;) { - switch (string[offset]) { - case LF: - offset += LF.length; - offsets.push(offset); - break; - case CR: - offset += CR.length; - if (string[offset] === LF) { - offset += LF.length; - } - offsets.push(offset); - break; - default: - offset++; - break; - } - } - this.offsets = offsets; - } - LinesAndColumns.prototype.locationForIndex = function (index) { - if (index < 0 || index > this.string.length) { - return null; - } - var line = 0; - var offsets = this.offsets; - while (offsets[line + 1] <= index) { - line++; - } - var column = index - offsets[line]; - return { line: line, column: column }; - }; - LinesAndColumns.prototype.indexForLocation = function (location) { - var line = location.line, column = location.column; - if (line < 0 || line >= this.offsets.length) { - return null; - } - if (column < 0 || column > this.lengthOfLine(line)) { - return null; - } - return this.offsets[line] + column; - }; - LinesAndColumns.prototype.lengthOfLine = function (line) { - var offset = this.offsets[line]; - var nextOffset = line === this.offsets.length - 1 ? this.string.length : this.offsets[line + 1]; - return nextOffset - offset; - }; - return LinesAndColumns; -}()); -/* harmony default export */ __webpack_exports__["default"] = (LinesAndColumns); - - -/***/ }), - -/***/ "../../node_modules/load-json-file/index.js": -/***/ (function(module, exports, __webpack_require__) { -"use strict"; +const os = __webpack_require__("os"); +const hasFlag = __webpack_require__("../../node_modules/ora/node_modules/has-flag/index.js"); -const path = __webpack_require__("path"); -const {promisify} = __webpack_require__("util"); -const fs = __webpack_require__("../../node_modules/graceful-fs/graceful-fs.js"); -const stripBom = __webpack_require__("../../node_modules/strip-bom/index.js"); -const parseJson = __webpack_require__("../../node_modules/parse-json/index.js"); +const env = process.env; -const parse = (data, filePath, options = {}) => { - data = stripBom(data); +let forceColor; +if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false')) { + forceColor = false; +} else if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + forceColor = true; +} +if ('FORCE_COLOR' in env) { + forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; +} - if (typeof options.beforeParse === 'function') { - data = options.beforeParse(data); +function translateLevel(level) { + if (level === 0) { + return false; } - return parseJson(data, options.reviver, path.relative(process.cwd(), filePath)); -}; - -module.exports = async (filePath, options) => parse(await promisify(fs.readFile)(filePath, 'utf8'), filePath, options); -module.exports.sync = (filePath, options) => parse(fs.readFileSync(filePath, 'utf8'), filePath, options); - + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} -/***/ }), +function supportsColor(stream) { + if (forceColor === false) { + return 0; + } -/***/ "../../node_modules/make-dir/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; + } -"use strict"; + if (hasFlag('color=256')) { + return 2; + } -const fs = __webpack_require__("fs"); -const path = __webpack_require__("path"); -const {promisify} = __webpack_require__("util"); -const semver = __webpack_require__("../../node_modules/make-dir/node_modules/semver/semver.js"); + if (stream && !stream.isTTY && forceColor !== true) { + return 0; + } -const useNativeRecursiveOption = semver.satisfies(process.version, '>=10.12.0'); + const min = forceColor ? 1 : 0; -// https://github.com/nodejs/node/issues/8987 -// https://github.com/libuv/libuv/pull/1088 -const checkPath = pth => { if (process.platform === 'win32') { - const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, '')); - - if (pathHasInvalidWinCharacters) { - const error = new Error(`Path contains invalid characters: ${pth}`); - error.code = 'EINVAL'; - throw error; + // Node.js 7.5.0 is the first version of Node.js to include a patch to + // libuv that enables 256 color output on Windows. Anything earlier and it + // won't work. However, here we target Node.js 8 at minimum as it is an LTS + // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows + // release that supports 256 colors. Windows 10 build 14931 is the first release + // that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(process.versions.node.split('.')[0]) >= 8 && + Number(osRelease[0]) >= 10 && + Number(osRelease[2]) >= 10586 + ) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; } - } -}; - -const processOptions = options => { - // https://github.com/sindresorhus/make-dir/issues/18 - const defaults = { - mode: 0o777, - fs - }; - return { - ...defaults, - ...options - }; -}; + return 1; + } -const permissionError = pth => { - // This replicates the exception of `fs.mkdir` with native the - // `recusive` option when run on an invalid drive under Windows. - const error = new Error(`operation not permitted, mkdir '${pth}'`); - error.code = 'EPERM'; - error.errno = -4048; - error.path = pth; - error.syscall = 'mkdir'; - return error; -}; + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } -const makeDir = async (input, options) => { - checkPath(input); - options = processOptions(options); + return min; + } - const mkdir = promisify(options.fs.mkdir); - const stat = promisify(options.fs.stat); + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } - if (useNativeRecursiveOption && options.fs.mkdir === fs.mkdir) { - const pth = path.resolve(input); + if (env.COLORTERM === 'truecolor') { + return 3; + } - await mkdir(pth, { - mode: options.mode, - recursive: true - }); + if ('TERM_PROGRAM' in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - return pth; + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default + } } - const make = async pth => { - try { - await mkdir(pth, options.mode); + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } - return pth; - } catch (error) { - if (error.code === 'EPERM') { - throw error; - } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } - if (error.code === 'ENOENT') { - if (path.dirname(pth) === pth) { - throw permissionError(pth); - } + if ('COLORTERM' in env) { + return 1; + } - if (error.message.includes('null bytes')) { - throw error; - } + if (env.TERM === 'dumb') { + return min; + } - await make(path.dirname(pth)); + return min; +} - return make(pth); - } +function getSupportLevel(stream) { + const level = supportsColor(stream); + return translateLevel(level); +} - try { - const stats = await stat(pth); - if (!stats.isDirectory()) { - throw new Error('The path is not a directory'); - } - } catch (_) { - throw error; - } +module.exports = { + supportsColor: getSupportLevel, + stdout: getSupportLevel(process.stdout), + stderr: getSupportLevel(process.stderr) +}; - return pth; - } - }; - return make(path.resolve(input)); -}; +/***/ }), -module.exports = makeDir; +/***/ "../../node_modules/parse-json/index.js": +/***/ (function(module, exports, __webpack_require__) { -module.exports.sync = (input, options) => { - checkPath(input); - options = processOptions(options); +"use strict"; - if (useNativeRecursiveOption && options.fs.mkdirSync === fs.mkdirSync) { - const pth = path.resolve(input); +const errorEx = __webpack_require__("../../node_modules/error-ex/index.js"); +const fallback = __webpack_require__("../../node_modules/json-parse-better-errors/index.js"); +const {default: LinesAndColumns} = __webpack_require__("../../node_modules/lines-and-columns/dist/index.mjs"); +const {codeFrameColumns} = __webpack_require__("../../node_modules/@babel/code-frame/lib/index.js"); - fs.mkdirSync(pth, { - mode: options.mode, - recursive: true - }); +const JSONError = errorEx('JSONError', { + fileName: errorEx.append('in %s'), + codeFrame: errorEx.append('\n\n%s\n') +}); - return pth; +module.exports = (string, reviver, filename) => { + if (typeof reviver === 'string') { + filename = reviver; + reviver = null; } - const make = pth => { + try { try { - options.fs.mkdirSync(pth, options.mode); + return JSON.parse(string, reviver); } catch (error) { - if (error.code === 'EPERM') { - throw error; - } + fallback(string, reviver); + throw error; + } + } catch (error) { + error.message = error.message.replace(/\n/g, ''); + const indexMatch = error.message.match(/in JSON at position (\d+) while parsing near/); - if (error.code === 'ENOENT') { - if (path.dirname(pth) === pth) { - throw permissionError(pth); - } + const jsonError = new JSONError(error); + if (filename) { + jsonError.fileName = filename; + } - if (error.message.includes('null bytes')) { - throw error; - } + if (indexMatch && indexMatch.length > 0) { + const lines = new LinesAndColumns(string); + const index = Number(indexMatch[1]); + const location = lines.locationForIndex(index); - make(path.dirname(pth)); - return make(pth); - } + const codeFrame = codeFrameColumns( + string, + {start: {line: location.line + 1, column: location.column + 1}}, + {highlightCode: true} + ); - try { - if (!options.fs.statSync(pth).isDirectory()) { - throw new Error('The path is not a directory'); - } - } catch (_) { - throw error; - } + jsonError.codeFrame = codeFrame; } - return pth; - }; - - return make(path.resolve(input)); + throw jsonError; + } }; /***/ }), -/***/ "../../node_modules/make-dir/node_modules/semver/semver.js": -/***/ (function(module, exports) { +/***/ "../../node_modules/path-is-absolute/index.js": +/***/ (function(module, exports, __webpack_require__) { -exports = module.exports = SemVer +"use strict"; -var debug -/* istanbul ignore next */ -if (typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift('SEMVER') - console.log.apply(console, args) - } -} else { - debug = function () {} + +function posix(path) { + return path.charAt(0) === '/'; } -// 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' +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); -var MAX_LENGTH = 256 -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991 + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} -// Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16 +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; -// The actual regexps go on exports.re -var re = exports.re = [] -var src = exports.src = [] -var t = exports.tokens = {} -var R = 0 -function tok (n) { - t[n] = R++ -} +/***/ }), -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. +/***/ "../../node_modules/path-parse/index.js": +/***/ (function(module, exports, __webpack_require__) { -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. +"use strict"; -tok('NUMERICIDENTIFIER') -src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*' -tok('NUMERICIDENTIFIERLOOSE') -src[t.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 isWindows = process.platform === 'win32'; -tok('NONNUMERICIDENTIFIER') -src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' +// Regex to split a windows path into into [dir, root, basename, name, ext] +var splitWindowsRe = + /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; -// ## Main Version -// Three dot-separated numeric identifiers. +var win32 = {}; -tok('MAINVERSION') -src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')' +function win32SplitPath(filename) { + return splitWindowsRe.exec(filename).slice(1); +} -tok('MAINVERSIONLOOSE') -src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')' +win32.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[1], + dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3] + }; +}; -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. -tok('PRERELEASEIDENTIFIER') -src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')' -tok('PRERELEASEIDENTIFIERLOOSE') -src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')' +// Split a filename into [dir, root, basename, name, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; +var posix = {}; -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. -tok('PRERELEASE') -src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))' +function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); +} -tok('PRERELEASELOOSE') -src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))' -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. +posix.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 5) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + + return { + root: allParts[1], + dir: allParts[0].slice(0, -1), + base: allParts[2], + ext: allParts[4], + name: allParts[3], + }; +}; -tok('BUILDIDENTIFIER') -src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+' -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. +if (isWindows) + module.exports = win32.parse; +else /* posix */ + module.exports = posix.parse; -tok('BUILD') -src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + - '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))' +module.exports.posix = posix.parse; +module.exports.win32 = win32.parse; -// ## 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. +/***/ }), -tok('FULL') -tok('FULLPLAIN') -src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + - src[t.PRERELEASE] + '?' + - src[t.BUILD] + '?' +/***/ "../../node_modules/path-type/index.js": +/***/ (function(module, exports, __webpack_require__) { -src[t.FULL] = '^' + src[t.FULLPLAIN] + '$' +"use strict"; -// 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. -tok('LOOSEPLAIN') -src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + - src[t.PRERELEASELOOSE] + '?' + - src[t.BUILD] + '?' +const {promisify} = __webpack_require__("util"); +const fs = __webpack_require__("fs"); -tok('LOOSE') -src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$' +async function isType(fsStatType, statsMethodName, filePath) { + if (typeof filePath !== 'string') { + throw new TypeError(`Expected a string, got ${typeof filePath}`); + } -tok('GTLT') -src[t.GTLT] = '((?:<|>)?=?)' + try { + const stats = await promisify(fs[fsStatType])(filePath); + return stats[statsMethodName](); + } catch (error) { + if (error.code === 'ENOENT') { + return false; + } -// 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. -tok('XRANGEIDENTIFIERLOOSE') -src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' -tok('XRANGEIDENTIFIER') -src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*' - -tok('XRANGEPLAIN') -src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:' + src[t.PRERELEASE] + ')?' + - src[t.BUILD] + '?' + - ')?)?' + throw error; + } +} -tok('XRANGEPLAINLOOSE') -src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[t.PRERELEASELOOSE] + ')?' + - src[t.BUILD] + '?' + - ')?)?' +function isTypeSync(fsStatType, statsMethodName, filePath) { + if (typeof filePath !== 'string') { + throw new TypeError(`Expected a string, got ${typeof filePath}`); + } -tok('XRANGE') -src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$' -tok('XRANGELOOSE') -src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$' + try { + return fs[fsStatType](filePath)[statsMethodName](); + } catch (error) { + if (error.code === 'ENOENT') { + return false; + } -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -tok('COERCE') -src[t.COERCE] = '(^|[^\\d])' + - '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])' -tok('COERCERTL') -re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g') + throw error; + } +} -// Tilde ranges. -// Meaning is "reasonably at or greater than" -tok('LONETILDE') -src[t.LONETILDE] = '(?:~>?)' +exports.isFile = isType.bind(null, 'stat', 'isFile'); +exports.isDirectory = isType.bind(null, 'stat', 'isDirectory'); +exports.isSymlink = isType.bind(null, 'lstat', 'isSymbolicLink'); +exports.isFileSync = isTypeSync.bind(null, 'statSync', 'isFile'); +exports.isDirectorySync = isTypeSync.bind(null, 'statSync', 'isDirectory'); +exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink'); -tok('TILDETRIM') -src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+' -re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g') -var tildeTrimReplace = '$1~' -tok('TILDE') -src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$' -tok('TILDELOOSE') -src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$' +/***/ }), -// Caret ranges. -// Meaning is "at least and backwards compatible with" -tok('LONECARET') -src[t.LONECARET] = '(?:\\^)' +/***/ "../../node_modules/picomatch/index.js": +/***/ (function(module, exports, __webpack_require__) { -tok('CARETTRIM') -src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+' -re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g') -var caretTrimReplace = '$1^' +"use strict"; -tok('CARET') -src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$' -tok('CARETLOOSE') -src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$' -// A simple gt/lt/eq thing, or just "" to indicate "any version" -tok('COMPARATORLOOSE') -src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$' -tok('COMPARATOR') -src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$' +module.exports = __webpack_require__("../../node_modules/picomatch/lib/picomatch.js"); -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -tok('COMPARATORTRIM') -src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + - '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')' -// this one has to use the /g flag -re[t.COMPARATORTRIM] = new RegExp(src[t.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. -tok('HYPHENRANGE') -src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAIN] + ')' + - '\\s*$' +/***/ "../../node_modules/picomatch/lib/constants.js": +/***/ (function(module, exports, __webpack_require__) { -tok('HYPHENRANGELOOSE') -src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s*$' +"use strict"; -// Star ranges basically just allow anything at all. -tok('STAR') -src[t.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]) - } -} +const path = __webpack_require__("path"); +const WIN_SLASH = '\\\\/'; +const WIN_NO_SLASH = `[^${WIN_SLASH}]`; -exports.parse = parse -function parse (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } +/** + * Posix glob regex + */ - if (version instanceof SemVer) { - return version - } +const DOT_LITERAL = '\\.'; +const PLUS_LITERAL = '\\+'; +const QMARK_LITERAL = '\\?'; +const SLASH_LITERAL = '\\/'; +const ONE_CHAR = '(?=.)'; +const QMARK = '[^/]'; +const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; +const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; +const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; +const NO_DOT = `(?!${DOT_LITERAL})`; +const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; +const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; +const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; +const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; +const STAR = `${QMARK}*?`; - if (typeof version !== 'string') { - return null - } +const POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR +}; - if (version.length > MAX_LENGTH) { - return null - } +/** + * Windows glob regex + */ - var r = options.loose ? re[t.LOOSE] : re[t.FULL] - if (!r.test(version)) { - return null - } +const WINDOWS_CHARS = { + ...POSIX_CHARS, - try { - return new SemVer(version, options) - } catch (er) { - return null - } -} + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|$)` +}; -exports.valid = valid -function valid (version, options) { - var v = parse(version, options) - return v ? v.version : null -} +/** + * POSIX Bracket Regex + */ -exports.clean = clean -function clean (version, options) { - var s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} +const POSIX_REGEX_SOURCE = { + alnum: 'a-zA-Z0-9', + alpha: 'a-zA-Z', + ascii: '\\x00-\\x7F', + blank: ' \\t', + cntrl: '\\x00-\\x1F\\x7F', + digit: '0-9', + graph: '\\x21-\\x7E', + lower: 'a-z', + print: '\\x20-\\x7E ', + punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', + space: ' \\t\\r\\n\\v\\f', + upper: 'A-Z', + word: 'A-Za-z0-9_', + xdigit: 'A-Fa-f0-9' +}; -exports.SemVer = SemVer +module.exports = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, -function SemVer (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (version instanceof SemVer) { - if (version.loose === options.loose) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version) - } + // regular expressions + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, - if (version.length > MAX_LENGTH) { - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - } + // Replace globs with equivalent patterns to reduce parsing time. + REPLACEMENTS: { + '***': '*', + '**/**': '**', + '**/**/**': '**' + }, - if (!(this instanceof SemVer)) { - return new SemVer(version, options) - } + // Digits + CHAR_0: 48, /* 0 */ + CHAR_9: 57, /* 9 */ - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose + // Alphabet chars. + CHAR_UPPERCASE_A: 65, /* A */ + CHAR_LOWERCASE_A: 97, /* a */ + CHAR_UPPERCASE_Z: 90, /* Z */ + CHAR_LOWERCASE_Z: 122, /* z */ - var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) + CHAR_LEFT_PARENTHESES: 40, /* ( */ + CHAR_RIGHT_PARENTHESES: 41, /* ) */ - if (!m) { - throw new TypeError('Invalid Version: ' + version) - } + CHAR_ASTERISK: 42, /* * */ - this.raw = version + // Non-alphabetic chars. + CHAR_AMPERSAND: 38, /* & */ + CHAR_AT: 64, /* @ */ + CHAR_BACKWARD_SLASH: 92, /* \ */ + CHAR_CARRIAGE_RETURN: 13, /* \r */ + CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ + CHAR_COLON: 58, /* : */ + CHAR_COMMA: 44, /* , */ + CHAR_DOT: 46, /* . */ + CHAR_DOUBLE_QUOTE: 34, /* " */ + CHAR_EQUAL: 61, /* = */ + CHAR_EXCLAMATION_MARK: 33, /* ! */ + CHAR_FORM_FEED: 12, /* \f */ + CHAR_FORWARD_SLASH: 47, /* / */ + CHAR_GRAVE_ACCENT: 96, /* ` */ + CHAR_HASH: 35, /* # */ + CHAR_HYPHEN_MINUS: 45, /* - */ + CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ + CHAR_LEFT_CURLY_BRACE: 123, /* { */ + CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ + CHAR_LINE_FEED: 10, /* \n */ + CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ + CHAR_PERCENT: 37, /* % */ + CHAR_PLUS: 43, /* + */ + CHAR_QUESTION_MARK: 63, /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ + CHAR_RIGHT_CURLY_BRACE: 125, /* } */ + CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ + CHAR_SEMICOLON: 59, /* ; */ + CHAR_SINGLE_QUOTE: 39, /* ' */ + CHAR_SPACE: 32, /* */ + CHAR_TAB: 9, /* \t */ + CHAR_UNDERSCORE: 95, /* _ */ + CHAR_VERTICAL_LINE: 124, /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] + SEP: path.sep, - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } + /** + * Create EXTGLOB_CHARS + */ - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } + extglobChars(chars) { + return { + '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, + '?': { type: 'qmark', open: '(?:', close: ')?' }, + '+': { type: 'plus', open: '(?:', close: ')+' }, + '*': { type: 'star', open: '(?:', close: ')*' }, + '@': { type: 'at', open: '(?:', close: ')' } + }; + }, - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } + /** + * Create GLOB_CHARS + */ - // 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 - }) + globChars(win32) { + return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; } +}; - 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 -} +/***/ "../../node_modules/picomatch/lib/parse.js": +/***/ (function(module, exports, __webpack_require__) { -SemVer.prototype.compare = function (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +"use strict"; - return this.compareMain(other) || this.comparePre(other) -} -SemVer.prototype.compareMain = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +const constants = __webpack_require__("../../node_modules/picomatch/lib/constants.js"); +const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) -} +/** + * Constants + */ -SemVer.prototype.comparePre = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +const { + MAX_LENGTH, + POSIX_REGEX_SOURCE, + REGEX_NON_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS +} = constants; - // 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 +/** + * Helpers + */ + +const expandRange = (args, options) => { + if (typeof options.expandRange === 'function') { + return options.expandRange(...args, options); } - 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) -} + args.sort(); + const value = `[${args.join('-')}]`; -SemVer.prototype.compareBuild = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) + try { + /* eslint-disable-next-line no-new */ + new RegExp(value); + } catch (ex) { + return args.map(v => utils.escapeRegex(v)).join('..'); } - var i = 0 - do { - var a = this.build[i] - var b = other.build[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) -} + return value; +}; -// 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 +/** + * Create the message for a syntax error + */ - 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 +const syntaxError = (type, char) => { + return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; +}; - default: - throw new Error('invalid increment argument: ' + release) - } - this.format() - this.raw = this.version - return this -} +/** + * Parse the given input string. + * @param {String} input + * @param {Object} options + * @return {Object} + */ -exports.inc = inc -function inc (version, release, loose, identifier) { - if (typeof (loose) === 'string') { - identifier = loose - loose = undefined +const parse = (input, options) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); } - try { - return new SemVer(version, loose).inc(release, identifier).version - } catch (er) { - return null + input = REPLACEMENTS[input] || input; + + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); } -} -exports.diff = diff -function diff (version1, version2) { - if (eq(version1, version2)) { - return null - } else { - var v1 = parse(version1) - var v2 = parse(version2) - var prefix = '' - if (v1.prerelease.length || v2.prerelease.length) { - prefix = 'pre' - var defaultResult = 'prerelease' - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } - } - return defaultResult // may be undefined - } -} - -exports.compareIdentifiers = compareIdentifiers + const bos = { type: 'bos', value: '', output: opts.prepend || '' }; + const tokens = [bos]; -var numeric = /^[0-9]+$/ -function compareIdentifiers (a, b) { - var anum = numeric.test(a) - var bnum = numeric.test(b) + const capture = opts.capture ? '' : '?:'; + const win32 = utils.isWindows(options); - if (anum && bnum) { - a = +a - b = +b - } + // create constants based on platform, for windows or posix + const PLATFORM_CHARS = constants.globChars(win32); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; -exports.rcompareIdentifiers = rcompareIdentifiers -function rcompareIdentifiers (a, b) { - return compareIdentifiers(b, a) -} + const globstar = opts => { + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; -exports.major = major -function major (a, loose) { - return new SemVer(a, loose).major -} + const nodot = opts.dot ? '' : NO_DOT; + const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; -exports.minor = minor -function minor (a, loose) { - return new SemVer(a, loose).minor -} + if (opts.capture) { + star = `(${star})`; + } -exports.patch = patch -function patch (a, loose) { - return new SemVer(a, loose).patch -} + // minimatch options support + if (typeof opts.noext === 'boolean') { + opts.noextglob = opts.noext; + } -exports.compare = compare -function compare (a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)) -} + const state = { + input, + index: -1, + start: 0, + dot: opts.dot === true, + consumed: '', + output: '', + prefix: '', + backtrack: false, + negated: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + globstar: false, + tokens + }; -exports.compareLoose = compareLoose -function compareLoose (a, b) { - return compare(a, b, true) -} + input = utils.removePrefix(input, state); + len = input.length; -exports.compareBuild = compareBuild -function compareBuild (a, b, loose) { - var versionA = new SemVer(a, loose) - var versionB = new SemVer(b, loose) - return versionA.compare(versionB) || versionA.compareBuild(versionB) -} + const extglobs = []; + const braces = []; + const stack = []; + let prev = bos; + let value; -exports.rcompare = rcompare -function rcompare (a, b, loose) { - return compare(b, a, loose) -} + /** + * Tokenizing helpers + */ -exports.sort = sort -function sort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(a, b, loose) - }) -} + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index] || ''; + const remaining = () => input.slice(state.index + 1); + const consume = (value = '', num = 0) => { + state.consumed += value; + state.index += num; + }; -exports.rsort = rsort -function rsort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(b, a, loose) - }) -} + const append = token => { + state.output += token.output != null ? token.output : token.value; + consume(token.value); + }; -exports.gt = gt -function gt (a, b, loose) { - return compare(a, b, loose) > 0 -} + const negate = () => { + let count = 1; -exports.lt = lt -function lt (a, b, loose) { - return compare(a, b, loose) < 0 -} + while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) { + advance(); + state.start++; + count++; + } -exports.eq = eq -function eq (a, b, loose) { - return compare(a, b, loose) === 0 -} + if (count % 2 === 0) { + return false; + } -exports.neq = neq -function neq (a, b, loose) { - return compare(a, b, loose) !== 0 -} + state.negated = true; + state.start++; + return true; + }; -exports.gte = gte -function gte (a, b, loose) { - return compare(a, b, loose) >= 0 -} + const increment = type => { + state[type]++; + stack.push(type); + }; -exports.lte = lte -function lte (a, b, loose) { - return compare(a, b, loose) <= 0 -} + const decrement = type => { + state[type]--; + stack.pop(); + }; -exports.cmp = cmp -function cmp (a, op, b, loose) { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a === b + /** + * Push tokens onto the tokens array. This helper speeds up + * tokenizing by 1) helping us avoid backtracking as much as possible, + * and 2) helping us avoid creating extra tokens when consecutive + * characters are plain text. This improves performance and simplifies + * lookbehinds. + */ - case '!==': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a !== b + const push = tok => { + if (prev.type === 'globstar') { + const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); + const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren')); - case '': - case '=': - case '==': - return eq(a, b, loose) + if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = 'star'; + prev.value = '*'; + prev.output = star; + state.output += prev.output; + } + } - case '!=': - return neq(a, b, loose) + if (extglobs.length && tok.type !== 'paren') { + extglobs[extglobs.length - 1].inner += tok.value; + } - case '>': - return gt(a, b, loose) + if (tok.value || tok.output) append(tok); + if (prev && prev.type === 'text' && tok.type === 'text') { + prev.value += tok.value; + prev.output = (prev.output || '') + tok.value; + return; + } - case '>=': - return gte(a, b, loose) + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; - case '<': - return lt(a, b, loose) + const extglobOpen = (type, value) => { + const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; - case '<=': - return lte(a, b, loose) + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + const output = (opts.capture ? '(' : '') + token.open; - default: - throw new TypeError('Invalid operator: ' + op) - } -} + increment('parens'); + push({ type, value, output: state.output ? '' : ONE_CHAR }); + push({ type: 'paren', extglob: true, value: advance(), output }); + extglobs.push(token); + }; -exports.Comparator = Comparator -function Comparator (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } + const extglobClose = token => { + let output = token.close + (opts.capture ? ')' : ''); + let rest; - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } - } + if (token.type === 'negate') { + let extglobStar = star; - if (!(this instanceof Comparator)) { - return new Comparator(comp, options) - } + if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { + extglobStar = globstar(opts); + } - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) + if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { + output = token.close = `)$))${extglobStar}`; + } - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version - } + if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { + output = token.close = `)${rest})${extglobStar})`; + } - debug('comp', this) -} + if (token.prev.type === 'bos') { + state.negatedExtglob = true; + } + } -var ANY = {} -Comparator.prototype.parse = function (comp) { - var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - var m = comp.match(r) + push({ type: 'paren', extglob: true, value, output }); + decrement('parens'); + }; - if (!m) { - throw new TypeError('Invalid comparator: ' + comp) - } + /** + * Fast paths + */ - this.operator = m[1] !== undefined ? m[1] : '' - if (this.operator === '=') { - this.operator = '' - } + if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { + let backslashes = false; - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) - } -} + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === '\\') { + backslashes = true; + return m; + } -Comparator.prototype.toString = function () { - return this.value -} + if (first === '?') { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ''); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); + } + return QMARK.repeat(chars.length); + } -Comparator.prototype.test = function (version) { - debug('Comparator.test', version, this.options.loose) + if (first === '.') { + return DOT_LITERAL.repeat(chars.length); + } - if (this.semver === ANY || version === ANY) { - return true - } + if (first === '*') { + if (esc) { + return esc + first + (rest ? star : ''); + } + return star; + } + return esc ? m : `\\${m}`; + }); - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ''); + } else { + output = output.replace(/\\+/g, m => { + return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); + }); + } } - } - - return cmp(version, this.operator, this.semver, this.options) -} - -Comparator.prototype.intersects = function (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false + if (output === input && opts.contains === true) { + state.output = input; + return state; } - } - var rangeTmp - - if (this.operator === '') { - if (this.value === '') { - return true - } - rangeTmp = new Range(comp.value, options) - return satisfies(this.value, rangeTmp, options) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - rangeTmp = new Range(this.value, options) - return satisfies(comp.semver, rangeTmp, options) + state.output = utils.wrapOutput(output, state, options); + return state; } - 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, options) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')) - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')) + /** + * Tokenize input until we reach end-of-string + */ - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan -} + while (!eos()) { + value = advance(); -exports.Range = Range -function Range (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false + if (value === '\u0000') { + continue; } - } - if (range instanceof Range) { - if (range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease) { - return range - } else { - return new Range(range.raw, options) - } - } + /** + * Escaped characters + */ - if (range instanceof Comparator) { - return new Range(range.value, options) - } + if (value === '\\') { + const next = peek(); - if (!(this instanceof Range)) { - return new Range(range, options) - } + if (next === '/' && opts.bash !== true) { + continue; + } - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease + if (next === '.' || next === ';') { + continue; + } - // 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 (!next) { + value += '\\'; + push({ type: 'text', value }); + continue; + } - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range) - } + // collapse slashes to reduce potential for exploits + const match = /^\\+/.exec(remaining()); + let slashes = 0; - this.format() -} + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += '\\'; + } + } -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.options.loose - range = range.trim() - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.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[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range, re[t.COMPARATORTRIM]) + if (opts.unescape === true) { + value = advance(); + } else { + value += advance(); + } - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace) + if (state.brackets === 0) { + push({ type: 'text', value }); + continue; + } + } - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace) + /** + * If we're inside a regex character class, continue + * until we reach the closing bracket. + */ - // normalize spaces - range = range.split(/\s+/).join(' ') + if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { + if (opts.posix !== false && value === ':') { + const inner = prev.value.slice(1); + if (inner.includes('[')) { + prev.posix = true; - // At this point, the range is completely trimmed and - // ready to be split into comparators. + if (inner.includes(':')) { + const idx = prev.value.lastIndexOf('['); + const pre = prev.value.slice(0, idx); + const rest = prev.value.slice(idx + 2); + const posix = POSIX_REGEX_SOURCE[rest]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); - var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - var set = range.split(' ').map(function (comp) { - return parseComparator(comp, this.options) - }, this).join(' ').split(/\s+/) - if (this.options.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, this.options) - }, this) + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } + } + } + } - return set -} + if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { + value = `\\${value}`; + } -Range.prototype.intersects = function (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } + if (value === ']' && (prev.value === '[' || prev.value === '[^')) { + value = `\\${value}`; + } - return this.set.some(function (thisComparators) { - return ( - isSatisfiable(thisComparators, options) && - range.set.some(function (rangeComparators) { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every(function (thisComparator) { - return rangeComparators.every(function (rangeComparator) { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) -} + if (opts.posix === true && value === '!' && prev.value === '[') { + value = '^'; + } -// take a set of comparators and determine whether there -// exists a version which can satisfy it -function isSatisfiable (comparators, options) { - var result = true - var remainingComparators = comparators.slice() - var testComparator = remainingComparators.pop() + prev.value += value; + append({ value }); + continue; + } - while (result && remainingComparators.length) { - result = remainingComparators.every(function (otherComparator) { - return testComparator.intersects(otherComparator, options) - }) + /** + * If we're inside a quoted string, continue + * until we reach the closing double quote. + */ - testComparator = remainingComparators.pop() - } + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ value }); + continue; + } - return result -} + /** + * Double quotes + */ -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators -function toComparators (range, options) { - return new Range(range, options).set.map(function (comp) { - return comp.map(function (c) { - return c.value - }).join(' ').trim().split(' ') - }) -} + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ type: 'text', value }); + } + continue; + } -// 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, options) { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp -} + /** + * Parentheses + */ -function isX (id) { - return !id || id.toLowerCase() === 'x' || id === '*' -} + if (value === '(') { + increment('parens'); + push({ type: 'paren', value }); + continue; + } -// ~, ~> --> * (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, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceTilde(comp, options) - }).join(' ') -} + if (value === ')') { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '(')); + } -function replaceTilde (comp, options) { - var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] - return comp.replace(r, function (_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr) - var ret + const extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } - 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) - 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' + push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); + decrement('parens'); + continue; } - 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, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceCaret(comp, options) - }).join(' ') -} - -function replaceCaret (comp, options) { - debug('caret', comp, options) - var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] - return comp.replace(r, function (_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr) - var ret + /** + * Square brackets + */ - 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 (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' + if (value === '[') { + if (opts.nobracket === true || !remaining().includes(']')) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('closing', ']')); } + + value = `\\${value}`; } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0' + increment('brackets'); } - } - debug('caret return', ret) - return ret - }) -} + push({ type: 'bracket', value }); + continue; + } -function replaceXRanges (comp, options) { - debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map(function (comp) { - return replaceXRange(comp, options) - }).join(' ') -} + if (value === ']') { + if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { + push({ type: 'text', value, output: `\\${value}` }); + continue; + } -function replaceXRange (comp, options) { - comp = comp.trim() - var r = options.loose ? re[t.XRANGELOOSE] : re[t.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 (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '[')); + } - if (gtlt === '=' && anyX) { - gtlt = '' - } + push({ type: 'text', value, output: `\\${value}` }); + continue; + } - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : '' + decrement('brackets'); - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0' - } else { - // nothing is forbidden - ret = '*' + const prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { + value = `/${value}`; } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 + + prev.value += value; + append({ value }); + + // when literal brackets are explicitly disabled + // assume we should match with a regex character class + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; } - 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 { - 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 - } + const escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); + + // when literal brackets are explicitly enabled + // assume we should escape the brackets to match literal characters + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; } - ret = gtlt + M + '.' + m + '.' + p + pr - } else if (xm) { - ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr - } else if (xp) { - ret = '>=' + M + '.' + m + '.0' + pr + - ' <' + M + '.' + (+m + 1) + '.0' + pr + // when the user specifies nothing, try to match both + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; } - debug('xRange return', ret) - - return ret - }) -} + /** + * Braces + */ -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars (comp, options) { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[t.STAR], '') -} + if (value === '{' && opts.nobrace !== true) { + increment('braces'); -// This function is passed to string.replace(re[t.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 - } + const open = { + type: 'brace', + value, + output: '(', + outputIndex: state.output.length, + tokensIndex: state.tokens.length + }; - 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 - } + braces.push(open); + push(open); + continue; + } - return (from + ' ' + to).trim() -} + if (value === '}') { + const brace = braces[braces.length - 1]; -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function (version) { - if (!version) { - return false - } + if (opts.nobrace === true || !brace) { + push({ type: 'text', value, output: value }); + continue; + } - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } + let output = ')'; - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false -} + if (brace.dots === true) { + const arr = tokens.slice(); + const range = []; -function testSet (set, version, options) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } + for (let i = arr.length - 1; i >= 0; i--) { + tokens.pop(); + if (arr[i].type === 'brace') { + break; + } + if (arr[i].type !== 'dots') { + range.unshift(arr[i].value); + } + } - if (version.prerelease.length && !options.includePrerelease) { - // 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 (i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === ANY) { - continue + output = expandRange(range, opts); + state.backtrack = true; } - 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 + if (brace.comma !== true && brace.dots !== true) { + const out = state.output.slice(0, brace.outputIndex); + const toks = state.tokens.slice(brace.tokensIndex); + brace.value = brace.output = '\\{'; + value = output = '\\}'; + state.output = out; + for (const t of toks) { + state.output += (t.output || t.value); } } + + push({ type: 'brace', value, output }); + decrement('braces'); + braces.pop(); + continue; } - // Version has a -pre, but it's not one of the ones we like. - return false - } + /** + * Pipes + */ - return true -} + if (value === '|') { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ type: 'text', value }); + continue; + } -exports.satisfies = satisfies -function satisfies (version, range, options) { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} + /** + * Commas + */ -exports.maxSatisfying = maxSatisfying -function maxSatisfying (versions, range, options) { - var max = null - var maxSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} + if (value === ',') { + let output = value; -exports.minSatisfying = minSatisfying -function minSatisfying (versions, range, options) { - var min = null - var minSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) + const brace = braces[braces.length - 1]; + if (brace && stack[stack.length - 1] === 'braces') { + brace.comma = true; + output = '|'; } + + push({ type: 'comma', value, output }); + continue; } - }) - return min -} -exports.minVersion = minVersion -function minVersion (range, loose) { - range = new Range(range, loose) + /** + * Slashes + */ - var minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } + if (value === '/') { + // if the beginning of the glob is "./", advance the start + // to the current index, and don't add the "./" characters + // to the state. This greatly simplifies lookbehinds when + // checking for BOS characters like "!" and "." (not "./") + if (prev.type === 'dot' && state.index === state.start + 1) { + state.start = state.index + 1; + state.consumed = ''; + state.output = ''; + tokens.pop(); + prev = bos; // reset "prev" to the first token + continue; + } - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } + push({ type: 'slash', value, output: SLASH_LITERAL }); + continue; + } - minver = null - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] + /** + * Dots + */ - comparators.forEach(function (comparator) { - // Clone to avoid manipulating the comparator's semver object. - var compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!minver || gt(minver, compver)) { - minver = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error('Unexpected operation: ' + comparator.operator) + if (value === '.') { + if (state.braces > 0 && prev.type === 'dot') { + if (prev.value === '.') prev.output = DOT_LITERAL; + const brace = braces[braces.length - 1]; + prev.type = 'dots'; + prev.output += value; + prev.value += value; + brace.dots = true; + continue; } - }) - } - if (minver && range.test(minver)) { - return minver - } + if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') { + push({ type: 'text', value, output: DOT_LITERAL }); + continue; + } - return null -} + push({ type: 'dot', value, output: DOT_LITERAL }); + continue; + } -exports.validRange = validRange -function validRange (range, options) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } -} + /** + * Question marks + */ -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr -function ltr (version, range, options) { - return outside(version, range, '<', options) -} + if (value === '?') { + const isGroup = prev && prev.value === '('; + if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('qmark', value); + continue; + } -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr -function gtr (version, range, options) { - return outside(version, range, '>', options) -} + if (prev && prev.type === 'paren') { + const next = peek(); + let output = value; -exports.outside = outside -function outside (version, range, hilo, options) { - version = new SemVer(version, options) - range = new Range(range, options) + if (next === '<' && !utils.supportsLookbehinds()) { + throw new Error('Node.js v10 or higher is required for regex lookbehinds'); + } - 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 ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) { + output = `\\${value}`; + } - // If it satisifes the range it is not outside - if (satisfies(version, range, options)) { - return false - } + push({ type: 'text', value, output }); + continue; + } - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. + if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { + push({ type: 'qmark', value, output: QMARK_NO_DOT }); + continue; + } - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] + push({ type: 'qmark', value, output: QMARK }); + continue; + } - var high = null - var low = null + /** + * Exclamation + */ - 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, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator + if (value === '!') { + if (opts.noextglob !== true && peek() === '(') { + if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { + extglobOpen('negate', value); + continue; + } } - }) - - // 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 + if (opts.nonegate !== true && state.index === 0) { + negate(); + continue; + } } - } - return true -} -exports.prerelease = prerelease -function prerelease (version, options) { - var parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} + /** + * Plus + */ -exports.intersects = intersects -function intersects (r1, r2, options) { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2) -} + if (value === '+') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('plus', value); + continue; + } -exports.coerce = coerce -function coerce (version, options) { - if (version instanceof SemVer) { - return version - } + if ((prev && prev.value === '(') || opts.regex === false) { + push({ type: 'plus', value, output: PLUS_LITERAL }); + continue; + } - if (typeof version === 'number') { - version = String(version) - } + if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) { + push({ type: 'plus', value }); + continue; + } - if (typeof version !== 'string') { - return null - } + push({ type: 'plus', value: PLUS_LITERAL }); + continue; + } - options = options || {} + /** + * Plain text + */ - var match = null - if (!options.rtl) { - match = version.match(re[t.COERCE]) - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - var next - while ((next = re[t.COERCERTL].exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next + if (value === '@') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + push({ type: 'at', extglob: true, value, output: '' }); + continue; } - re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length + + push({ type: 'text', value }); + continue; } - // leave it in a clean state - re[t.COERCERTL].lastIndex = -1 - } - if (match === null) { - return null - } + /** + * Plain text + */ - return parse(match[2] + - '.' + (match[3] || '0') + - '.' + (match[4] || '0'), options) -} + if (value !== '*') { + if (value === '$' || value === '^') { + value = `\\${value}`; + } + const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); + if (match) { + value += match[0]; + state.index += match[0].length; + } -/***/ }), + push({ type: 'text', value }); + continue; + } -/***/ "../../node_modules/map-cache/index.js": -/***/ (function(module, exports, __webpack_require__) { + /** + * Stars + */ -"use strict"; -/*! - * map-cache - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ + if (prev && (prev.type === 'globstar' || prev.star === true)) { + prev.type = 'star'; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.globstar = true; + consume(value); + continue; + } + let rest = remaining(); + if (opts.noextglob !== true && /^\([^?]/.test(rest)) { + extglobOpen('star', value); + continue; + } + if (prev.type === 'star') { + if (opts.noglobstar === true) { + consume(value); + continue; + } -var hasOwn = Object.prototype.hasOwnProperty; + const prior = prev.prev; + const before = prior.prev; + const isStart = prior.type === 'slash' || prior.type === 'bos'; + const afterStar = before && (before.type === 'star' || before.type === 'globstar'); -/** - * Expose `MapCache` - */ + if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) { + push({ type: 'star', value, output: '' }); + continue; + } -module.exports = MapCache; + const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); + const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); + if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { + push({ type: 'star', value, output: '' }); + continue; + } -/** - * Creates a cache object to store key/value pairs. - * - * ```js - * var cache = new MapCache(); - * ``` - * - * @api public - */ + // strip consecutive `/**/` + while (rest.slice(0, 3) === '/**') { + const after = input[state.index + 4]; + if (after && after !== '/') { + break; + } + rest = rest.slice(3); + consume('/**', 3); + } -function MapCache(data) { - this.__data__ = data || {}; -} + if (prior.type === 'bos' && eos()) { + prev.type = 'globstar'; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.globstar = true; + consume(value); + continue; + } -/** - * Adds `value` to `key` on the cache. - * - * ```js - * cache.set('foo', 'bar'); - * ``` - * - * @param {String} `key` The key of the value to cache. - * @param {*} `value` The value to cache. - * @returns {Object} Returns the `Cache` object for chaining. - * @api public - */ + if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; -MapCache.prototype.set = function mapSet(key, value) { - if (key !== '__proto__') { - this.__data__[key] = value; - } - return this; -}; + prev.type = 'globstar'; + prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)'); + prev.value += value; + state.globstar = true; + state.output += prior.output + prev.output; + consume(value); + continue; + } -/** - * Gets the cached value for `key`. - * - * ```js - * cache.get('foo'); - * //=> 'bar' - * ``` - * - * @param {String} `key` The key of the value to get. - * @returns {*} Returns the cached value. - * @api public - */ + if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') { + const end = rest[1] !== void 0 ? '|$' : ''; -MapCache.prototype.get = function mapGet(key) { - return key === '__proto__' ? undefined : this.__data__[key]; -}; + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; -/** - * Checks if a cached value for `key` exists. - * - * ```js - * cache.has('foo'); - * //=> true - * ``` - * - * @param {String} `key` The key of the entry to check. - * @returns {Boolean} Returns `true` if an entry for `key` exists, else `false`. - * @api public - */ + prev.type = 'globstar'; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; -MapCache.prototype.has = function mapHas(key) { - return key !== '__proto__' && hasOwn.call(this.__data__, key); -}; + state.output += prior.output + prev.output; + state.globstar = true; -/** - * Removes `key` and its value from the cache. - * - * ```js - * cache.del('foo'); - * ``` - * @title .del - * @param {String} `key` The key of the value to remove. - * @returns {Boolean} Returns `true` if the entry was removed successfully, else `false`. - * @api public - */ + consume(value + advance()); -MapCache.prototype.del = function mapDelete(key) { - return this.has(key) && delete this.__data__[key]; -}; + push({ type: 'slash', value: '/', output: '' }); + continue; + } + if (prior.type === 'bos' && rest[0] === '/') { + prev.type = 'globstar'; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: 'slash', value: '/', output: '' }); + continue; + } -/***/ }), + // remove single star from output + state.output = state.output.slice(0, -prev.output.length); -/***/ "../../node_modules/map-visit/index.js": -/***/ (function(module, exports, __webpack_require__) { + // reset previous token to globstar + prev.type = 'globstar'; + prev.output = globstar(opts); + prev.value += value; -"use strict"; + // reset output with globstar + state.output += prev.output; + state.globstar = true; + consume(value); + continue; + } + const token = { type: 'star', value, output: star }; -var util = __webpack_require__("util"); -var visit = __webpack_require__("../../node_modules/object-visit/index.js"); + if (opts.bash === true) { + token.output = '.*?'; + if (prev.type === 'bos' || prev.type === 'slash') { + token.output = nodot + token.output; + } + push(token); + continue; + } -/** - * Map `visit` over an array of objects. - * - * @param {Object} `collection` The context in which to invoke `method` - * @param {String} `method` Name of the method to call on `collection` - * @param {Object} `arr` Array of objects. - */ + if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { + token.output = value; + push(token); + continue; + } -module.exports = function mapVisit(collection, method, val) { - if (isObject(val)) { - return visit.apply(null, arguments); - } + if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { + if (prev.type === 'dot') { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; - if (!Array.isArray(val)) { - throw new TypeError('expected an array: ' + util.inspect(val)); - } + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; - var args = [].slice.call(arguments, 3); + } else { + state.output += nodot; + prev.output += nodot; + } - for (var i = 0; i < val.length; i++) { - var ele = val[i]; - if (isObject(ele)) { - visit.apply(null, [collection, method, ele].concat(args)); - } else { - collection[method].apply(collection, [ele].concat(args)); + if (peek() !== '*') { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } } - } -}; - -function isObject(val) { - return val && (typeof val === 'function' || (!Array.isArray(val) && typeof val === 'object')); -} - - -/***/ }), - -/***/ "../../node_modules/merge-stream/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const { PassThrough } = __webpack_require__("stream"); - -module.exports = function (/*streams...*/) { - var sources = [] - var output = new PassThrough({objectMode: true}) - output.setMaxListeners(0) - - output.add = add - output.isEmpty = isEmpty - - output.on('unpipe', remove) - - Array.prototype.slice.call(arguments).forEach(add) - - return output + push(token); + } - function add (source) { - if (Array.isArray(source)) { - source.forEach(add) - return this - } + while (state.brackets > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); + state.output = utils.escapeLast(state.output, '['); + decrement('brackets'); + } - sources.push(source); - source.once('end', remove.bind(null, source)) - source.once('error', output.emit.bind(output, 'error')) - source.pipe(output, {end: false}) - return this + while (state.parens > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); + state.output = utils.escapeLast(state.output, '('); + decrement('parens'); } - function isEmpty () { - return sources.length == 0; + while (state.braces > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); + state.output = utils.escapeLast(state.output, '{'); + decrement('braces'); } - function remove (source) { - sources = sources.filter(function (it) { return it !== source }) - if (!sources.length && output.readable) { output.end() } + if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { + push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); } -} + // rebuild the output if we had to backtrack at any point + if (state.backtrack === true) { + state.output = ''; -/***/ }), + for (const token of state.tokens) { + state.output += token.output != null ? token.output : token.value; -/***/ "../../node_modules/merge2/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (token.suffix) { + state.output += token.suffix; + } + } + } -"use strict"; + return state; +}; -/* - * merge2 - * https://github.com/teambition/merge2 - * - * Copyright (c) 2014-2020 Teambition - * Licensed under the MIT license. +/** + * Fast paths for creating regular expressions for common glob patterns. + * This can significantly speed up processing and has very little downside + * impact when none of the fast paths match. */ -const Stream = __webpack_require__("stream") -const PassThrough = Stream.PassThrough -const slice = Array.prototype.slice -module.exports = merge2 +parse.fastpaths = (input, options) => { + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + const len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } -function merge2 () { - const streamsQueue = [] - const args = slice.call(arguments) - let merging = false - let options = args[args.length - 1] + input = REPLACEMENTS[input] || input; + const win32 = utils.isWindows(options); - if (options && !Array.isArray(options) && options.pipe == null) { - args.pop() - } else { - options = {} - } + // create constants based on platform, for windows or posix + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(win32); - const doEnd = options.end !== false - const doPipeError = options.pipeError === true - if (options.objectMode == null) { - options.objectMode = true - } - if (options.highWaterMark == null) { - options.highWaterMark = 64 * 1024 - } - const mergedStream = PassThrough(options) + const nodot = opts.dot ? NO_DOTS : NO_DOT; + const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + const capture = opts.capture ? '' : '?:'; + const state = { negated: false, prefix: '' }; + let star = opts.bash === true ? '.*?' : STAR; - function addStream () { - for (let i = 0, len = arguments.length; i < len; i++) { - streamsQueue.push(pauseStreams(arguments[i], options)) - } - mergeStream() - return this + if (opts.capture) { + star = `(${star})`; } - function mergeStream () { - if (merging) { - return - } - merging = true + const globstar = opts => { + if (opts.noglobstar === true) return star; + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; - let streams = streamsQueue.shift() - if (!streams) { - process.nextTick(endStream) - return - } - if (!Array.isArray(streams)) { - streams = [streams] - } + const create = str => { + switch (str) { + case '*': + return `${nodot}${ONE_CHAR}${star}`; - let pipesCount = streams.length + 1 + case '.*': + return `${DOT_LITERAL}${ONE_CHAR}${star}`; - function next () { - if (--pipesCount > 0) { - return - } - merging = false - mergeStream() - } + case '*.*': + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; - function pipe (stream) { - function onend () { - stream.removeListener('merge2UnpipeEnd', onend) - stream.removeListener('end', onend) - if (doPipeError) { - stream.removeListener('error', onerror) - } - next() - } - function onerror (err) { - mergedStream.emit('error', err) - } - // skip ended stream - if (stream._readableState.endEmitted) { - return next() - } + case '*/*': + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; - stream.on('merge2UnpipeEnd', onend) - stream.on('end', onend) + case '**': + return nodot + globstar(opts); - if (doPipeError) { - stream.on('error', onerror) - } + case '**/*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; - stream.pipe(mergedStream, { end: false }) - // compatible for old stream - stream.resume() - } + case '**/*.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; - for (let i = 0; i < streams.length; i++) { - pipe(streams[i]) - } + case '**/.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; - next() - } + default: { + const match = /^(.*?)\.(\w+)$/.exec(str); + if (!match) return; - function endStream () { - merging = false - // emit 'queueDrain' when all streams merged. - mergedStream.emit('queueDrain') - if (doEnd) { - mergedStream.end() + const source = create(match[1]); + if (!source) return; + + return source + DOT_LITERAL + match[2]; + } } - } + }; - mergedStream.setMaxListeners(0) - mergedStream.add = addStream - mergedStream.on('unpipe', function (stream) { - stream.emit('merge2UnpipeEnd') - }) + const output = utils.removePrefix(input, state); + let source = create(output); - if (args.length) { - addStream.apply(null, args) + if (source && opts.strictSlashes !== true) { + source += `${SLASH_LITERAL}?`; } - return mergedStream -} -// check and pause streams for pipe. -function pauseStreams (streams, options) { - if (!Array.isArray(streams)) { - // Backwards-compat with old-style streams - if (!streams._readableState && streams.pipe) { - streams = streams.pipe(PassThrough(options)) - } - if (!streams._readableState || !streams.pause || !streams.pipe) { - throw new Error('Only readable stream can be merged.') - } - streams.pause() - } else { - for (let i = 0, len = streams.length; i < len; i++) { - streams[i] = pauseStreams(streams[i], options) - } - } - return streams -} + return source; +}; + +module.exports = parse; /***/ }), -/***/ "../../node_modules/micromatch/index.js": +/***/ "../../node_modules/picomatch/lib/picomatch.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -/** - * Module dependencies - */ - -var util = __webpack_require__("util"); -var braces = __webpack_require__("../../node_modules/micromatch/node_modules/braces/index.js"); -var toRegex = __webpack_require__("../../node_modules/to-regex/index.js"); -var extend = __webpack_require__("../../node_modules/micromatch/node_modules/extend-shallow/index.js"); - -/** - * Local dependencies - */ - -var compilers = __webpack_require__("../../node_modules/micromatch/lib/compilers.js"); -var parsers = __webpack_require__("../../node_modules/micromatch/lib/parsers.js"); -var cache = __webpack_require__("../../node_modules/micromatch/lib/cache.js"); -var utils = __webpack_require__("../../node_modules/micromatch/lib/utils.js"); -var MAX_LENGTH = 1024 * 64; +const path = __webpack_require__("path"); +const scan = __webpack_require__("../../node_modules/picomatch/lib/scan.js"); +const parse = __webpack_require__("../../node_modules/picomatch/lib/parse.js"); +const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); +const constants = __webpack_require__("../../node_modules/picomatch/lib/constants.js"); +const isObject = val => val && typeof val === 'object' && !Array.isArray(val); /** - * The main function takes a list of strings and one or more - * glob patterns to use for matching. + * Creates a matcher function from one or more glob patterns. The + * returned function takes a string to match as its first argument, + * and returns true if the string is a match. The returned matcher + * function also takes a boolean as the second argument that, when true, + * returns an object with additional information. * * ```js - * var mm = require('micromatch'); - * mm(list, patterns[, options]); + * const picomatch = require('picomatch'); + * // picomatch(glob[, options]); * - * console.log(mm(['a.js', 'a.txt'], ['*.js'])); - * //=> [ 'a.js' ] + * const isMatch = picomatch('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true * ``` - * @param {Array} `list` A list of strings to match - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array} Returns an array of matches - * @summary false + * @name picomatch + * @param {String|Array} `globs` One or more glob patterns. + * @param {Object=} `options` + * @return {Function=} Returns a matcher function. * @api public */ -function micromatch(list, patterns, options) { - patterns = utils.arrayify(patterns); - list = utils.arrayify(list); - - var len = patterns.length; - if (list.length === 0 || len === 0) { - return []; - } - - if (len === 1) { - return micromatch.match(list, patterns[0], options); +const picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + const fns = glob.map(input => picomatch(input, options, returnState)); + const arrayMatcher = str => { + for (const isMatch of fns) { + const state = isMatch(str); + if (state) return state; + } + return false; + }; + return arrayMatcher; } - var omit = []; - var keep = []; - var idx = -1; - - while (++idx < len) { - var pattern = patterns[idx]; - - if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 /* ! */) { - omit.push.apply(omit, micromatch.match(list, pattern.slice(1), options)); - } else { - keep.push.apply(keep, micromatch.match(list, pattern, options)); - } - } + const isState = isObject(glob) && glob.tokens && glob.input; - var matches = utils.diff(keep, omit); - if (!options || options.nodupes !== false) { - return utils.unique(matches); + if (glob === '' || (typeof glob !== 'string' && !isState)) { + throw new TypeError('Expected pattern to be a non-empty string'); } - return matches; -} + const opts = options || {}; + const posix = utils.isWindows(options); + const regex = isState + ? picomatch.compileRe(glob, options) + : picomatch.makeRe(glob, options, false, true); -/** - * Similar to the main function, but `pattern` must be a string. - * - * ```js - * var mm = require('micromatch'); - * mm.match(list, pattern[, options]); - * - * console.log(mm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a')); - * //=> ['a.a', 'a.aa'] - * ``` - * @param {Array} `list` Array of strings to match - * @param {String} `pattern` Glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array} Returns an array of matches - * @api public - */ + const state = regex.state; + delete regex.state; -micromatch.match = function(list, pattern, options) { - if (Array.isArray(pattern)) { - throw new TypeError('expected pattern to be a string'); + let isIgnored = () => false; + if (opts.ignore) { + const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); } - var unixify = utils.unixify(options); - var isMatch = memoize('match', pattern, options, micromatch.matcher); - var matches = []; - - list = utils.arrayify(list); - var len = list.length; - var idx = -1; + const matcher = (input, returnObject = false) => { + const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); + const result = { glob, state, regex, posix, input, output, match, isMatch }; - while (++idx < len) { - var ele = list[idx]; - if (ele === pattern || isMatch(ele)) { - matches.push(utils.value(ele, unixify, options)); + if (typeof opts.onResult === 'function') { + opts.onResult(result); } - } - // if no options were passed, uniquify results and return - if (typeof options === 'undefined') { - return utils.unique(matches); - } + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } - if (matches.length === 0) { - if (options.failglob === true) { - throw new Error('no matches found for "' + pattern + '"'); + if (isIgnored(input)) { + if (typeof opts.onIgnore === 'function') { + opts.onIgnore(result); + } + result.isMatch = false; + return returnObject ? result : false; } - if (options.nonull === true || options.nullglob === true) { - return [options.unescape ? utils.unescape(pattern) : pattern]; + + if (typeof opts.onMatch === 'function') { + opts.onMatch(result); } - } + return returnObject ? result : true; + }; - // if `opts.ignore` was defined, diff ignored list - if (options.ignore) { - matches = micromatch.not(matches, options.ignore, options); + if (returnState) { + matcher.state = state; } - return options.nodupes !== false ? utils.unique(matches) : matches; + return matcher; }; /** - * Returns true if the specified `string` matches the given glob `pattern`. + * Test `input` with the given `regex`. This is used by the main + * `picomatch()` function to test the input string. * * ```js - * var mm = require('micromatch'); - * mm.isMatch(string, pattern[, options]); + * const picomatch = require('picomatch'); + * // picomatch.test(input, regex[, options]); * - * console.log(mm.isMatch('a.a', '*.a')); - * //=> true - * console.log(mm.isMatch('a.b', '*.a')); - * //=> false + * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); + * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } * ``` - * @param {String} `string` String to match - * @param {String} `pattern` Glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if the string matches the glob pattern. + * @param {String} `input` String to test. + * @param {RegExp} `regex` + * @return {Object} Returns an object with matching info. * @api public */ -micromatch.isMatch = function(str, pattern, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string: "' + util.inspect(str) + '"'); +picomatch.test = (input, regex, options, { glob, posix } = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected input to be a string'); } - if (isEmptyString(str) || isEmptyString(pattern)) { - return false; + if (input === '') { + return { isMatch: false, output: '' }; } - var equals = utils.equalsPattern(options); - if (equals(str)) { - return true; + const opts = options || {}; + const format = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = (match && format) ? format(input) : input; + + if (match === false) { + output = format ? format(input) : input; + match = output === glob; + } + + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); + } } - var isMatch = memoize('isMatch', pattern, options, micromatch.matcher); - return isMatch(str); + return { isMatch: Boolean(match), match, output }; }; /** - * Returns true if some of the strings in the given `list` match any of the - * given glob `patterns`. + * Match the basename of a filepath. * * ```js - * var mm = require('micromatch'); - * mm.some(list, patterns[, options]); - * - * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); - * // true - * console.log(mm.some(['foo.js'], ['*.js', '!foo.js'])); - * // false + * const picomatch = require('picomatch'); + * // picomatch.matchBase(input, glob[, options]); + * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true * ``` - * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` + * @param {String} `input` String to test. + * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). + * @return {Boolean} * @api public */ -micromatch.some = function(list, patterns, options) { - if (typeof list === 'string') { - list = [list]; - } - for (var i = 0; i < list.length; i++) { - if (micromatch(list[i], patterns, options).length === 1) { - return true; - } - } - return false; +picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { + const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(path.basename(input)); }; /** - * Returns true if every string in the given `list` matches - * any of the given glob `patterns`. + * Returns true if **any** of the given glob `patterns` match the specified `string`. * * ```js - * var mm = require('micromatch'); - * mm.every(list, patterns[, options]); + * const picomatch = require('picomatch'); + * // picomatch.isMatch(string, patterns[, options]); * - * console.log(mm.every('foo.js', ['foo.js'])); - * // true - * console.log(mm.every(['foo.js', 'bar.js'], ['*.js'])); - * // true - * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); - * // false - * console.log(mm.every(['foo.js'], ['*.js', '!foo.js'])); - * // false + * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false * ``` - * @param {String|Array} `list` The string or array of strings to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed + * @param {String|Array} str The string to test. + * @param {String|Array} patterns One or more glob patterns to use for matching. + * @param {Object} [options] See available [options](#options). * @return {Boolean} Returns true if any patterns match `str` * @api public */ -micromatch.every = function(list, patterns, options) { - if (typeof list === 'string') { - list = [list]; - } - for (var i = 0; i < list.length; i++) { - if (micromatch(list[i], patterns, options).length !== 1) { - return false; - } - } - return true; -}; +picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); /** - * Returns true if **any** of the given glob `patterns` - * match the specified `string`. + * Parse a glob pattern to create the source string for a regular + * expression. * * ```js - * var mm = require('micromatch'); - * mm.any(string, patterns[, options]); - * - * console.log(mm.any('a.a', ['b.*', '*.a'])); - * //=> true - * console.log(mm.any('a.a', 'b.*')); - * //=> false + * const picomatch = require('picomatch'); + * const result = picomatch.parse(pattern[, options]); * ``` - * @param {String|Array} `str` The string to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as a regex source string. * @api public */ -micromatch.any = function(str, patterns, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string: "' + util.inspect(str) + '"'); - } - - if (isEmptyString(str) || isEmptyString(patterns)) { - return false; - } - - if (typeof patterns === 'string') { - patterns = [patterns]; - } - - for (var i = 0; i < patterns.length; i++) { - if (micromatch.isMatch(str, patterns[i], options)) { - return true; - } - } - return false; -}; +picomatch.parse = (pattern, options) => { + if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); + return parse(pattern, { ...options, fastpaths: false }); +}; /** - * Returns true if **all** of the given `patterns` match - * the specified string. + * Scan a glob pattern to separate the pattern into segments. * * ```js - * var mm = require('micromatch'); - * mm.all(string, patterns[, options]); - * - * console.log(mm.all('foo.js', ['foo.js'])); - * // true - * - * console.log(mm.all('foo.js', ['*.js', '!foo.js'])); - * // false - * - * console.log(mm.all('foo.js', ['*.js', 'foo.js'])); - * // true + * const picomatch = require('picomatch'); + * // picomatch.scan(input[, options]); * - * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); - * // true + * const result = picomatch.scan('!./foo/*.js'); + * console.log(result); + * { prefix: '!./', + * input: '!./foo/*.js', + * start: 3, + * base: 'foo', + * glob: '*.js', + * isBrace: false, + * isBracket: false, + * isGlob: true, + * isExtglob: false, + * isGlobstar: false, + * negated: true } * ``` - * @param {String|Array} `str` The string to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` + * @param {String} `input` Glob pattern to scan. + * @param {Object} `options` + * @return {Object} Returns an object with * @api public */ -micromatch.all = function(str, patterns, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string: "' + util.inspect(str) + '"'); - } - if (typeof patterns === 'string') { - patterns = [patterns]; - } - for (var i = 0; i < patterns.length; i++) { - if (!micromatch.isMatch(str, patterns[i], options)) { - return false; - } - } - return true; -}; +picomatch.scan = (input, options) => scan(input, options); /** - * Returns a list of strings that _**do not match any**_ of the given `patterns`. - * - * ```js - * var mm = require('micromatch'); - * mm.not(list, patterns[, options]); + * Compile a regular expression from the `state` object returned by the + * [parse()](#parse) method. * - * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a')); - * //=> ['b.b', 'c.c'] - * ``` - * @param {Array} `list` Array of strings to match. - * @param {String|Array} `patterns` One or more glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array} Returns an array of strings that **do not match** the given patterns. + * @param {Object} `state` + * @param {Object} `options` + * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. + * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. + * @return {RegExp} * @api public */ -micromatch.not = function(list, patterns, options) { - var opts = extend({}, options); - var ignore = opts.ignore; - delete opts.ignore; - - var unixify = utils.unixify(opts); - list = utils.arrayify(list).map(unixify); - - var matches = utils.diff(list, micromatch(list, patterns, opts)); - if (ignore) { - matches = utils.diff(matches, micromatch(list, ignore)); +picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { + if (returnOutput === true) { + return state.output; } - return opts.nodupes !== false ? utils.unique(matches) : matches; -}; - -/** - * Returns true if the given `string` contains the given pattern. Similar - * to [.isMatch](#isMatch) but the pattern can match any part of the string. - * - * ```js - * var mm = require('micromatch'); - * mm.contains(string, pattern[, options]); - * - * console.log(mm.contains('aa/bb/cc', '*b')); - * //=> true - * console.log(mm.contains('aa/bb/cc', '*d')); - * //=> false - * ``` - * @param {String} `str` The string to match. - * @param {String|Array} `patterns` Glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if the patter matches any part of `str`. - * @api public - */ + const opts = options || {}; + const prepend = opts.contains ? '' : '^'; + const append = opts.contains ? '' : '$'; -micromatch.contains = function(str, patterns, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string: "' + util.inspect(str) + '"'); + let source = `${prepend}(?:${state.output})${append}`; + if (state && state.negated === true) { + source = `^(?!${source}).*$`; } - if (typeof patterns === 'string') { - if (isEmptyString(str) || isEmptyString(patterns)) { - return false; - } - - var equals = utils.equalsPattern(patterns, options); - if (equals(str)) { - return true; - } - var contains = utils.containsPattern(patterns, options); - if (contains(str)) { - return true; - } + const regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = state; } - var opts = extend({}, options, {contains: true}); - return micromatch.any(str, patterns, opts); -}; - -/** - * Returns true if the given pattern and options should enable - * the `matchBase` option. - * @return {Boolean} - * @api private - */ - -micromatch.matchBase = function(pattern, options) { - if (pattern && pattern.indexOf('/') !== -1 || !options) return false; - return options.basename === true || options.matchBase === true; -}; - -/** - * Filter the keys of the given object with the given `glob` pattern - * and `options`. Does not attempt to match nested keys. If you need this feature, - * use [glob-object][] instead. - * - * ```js - * var mm = require('micromatch'); - * mm.matchKeys(object, patterns[, options]); - * - * var obj = { aa: 'a', ab: 'b', ac: 'c' }; - * console.log(mm.matchKeys(obj, '*b')); - * //=> { ab: 'b' } - * ``` - * @param {Object} `object` The object with keys to filter. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Object} Returns an object with only keys that match the given patterns. - * @api public - */ - -micromatch.matchKeys = function(obj, patterns, options) { - if (!utils.isObject(obj)) { - throw new TypeError('expected the first argument to be an object'); - } - var keys = micromatch(Object.keys(obj), patterns, options); - return utils.pick(obj, keys); + return regex; }; /** - * Returns a memoized matcher function from the given glob `pattern` and `options`. - * The returned function takes a string to match as its only argument and returns - * true if the string is a match. + * Create a regular expression from a parsed glob pattern. * * ```js - * var mm = require('micromatch'); - * mm.matcher(pattern[, options]); + * const picomatch = require('picomatch'); + * const state = picomatch.parse('*.js'); + * // picomatch.compileRe(state[, options]); * - * var isMatch = mm.matcher('*.!(*a)'); - * console.log(isMatch('a.a')); - * //=> false - * console.log(isMatch('a.b')); - * //=> true + * console.log(picomatch.compileRe(state)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ * ``` - * @param {String} `pattern` Glob pattern - * @param {Object} `options` See available [options](#options) for changing how matches are performed. - * @return {Function} Returns a matcher function. + * @param {String} `state` The object returned from the `.parse` method. + * @param {Object} `options` + * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. + * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression. + * @return {RegExp} Returns a regex created from the given pattern. * @api public */ -micromatch.matcher = function matcher(pattern, options) { - if (Array.isArray(pattern)) { - return compose(pattern, options, matcher); - } - - // if pattern is a regex - if (pattern instanceof RegExp) { - return test(pattern); - } - - // if pattern is invalid - if (!utils.isString(pattern)) { - throw new TypeError('expected pattern to be an array, string or regex'); - } - - // if pattern is a non-glob string - if (!utils.hasSpecialChars(pattern)) { - if (options && options.nocase === true) { - pattern = pattern.toLowerCase(); - } - return utils.matchPath(pattern, options); +picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { + if (!input || typeof input !== 'string') { + throw new TypeError('Expected a non-empty string'); } - // if pattern is a glob string - var re = micromatch.makeRe(pattern, options); + let parsed = { negated: false, fastpaths: true }; - // if `options.matchBase` or `options.basename` is defined - if (micromatch.matchBase(pattern, options)) { - return utils.matchBasename(re, options); + if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { + parsed.output = parse.fastpaths(input, options); } - function test(regex) { - var equals = utils.equalsPattern(options); - var unixify = utils.unixify(options); - - return function(str) { - if (equals(str)) { - return true; - } - - if (regex.test(unixify(str))) { - return true; - } - return false; - }; + if (!parsed.output) { + parsed = parse(input, options); } - var fn = test(re); - Object.defineProperty(fn, 'result', { - configurable: true, - enumerable: false, - value: re.result - }); - return fn; + return picomatch.compileRe(parsed, options, returnOutput, returnState); }; /** - * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match. + * Create a regular expression from the given regex source string. * * ```js - * var mm = require('micromatch'); - * mm.capture(pattern, string[, options]); + * const picomatch = require('picomatch'); + * // picomatch.toRegex(source[, options]); * - * console.log(mm.capture('test/*.js', 'test/foo.js')); - * //=> ['foo'] - * console.log(mm.capture('test/*.js', 'foo/bar.css')); - * //=> null + * const { output } = picomatch.parse('*.js'); + * console.log(picomatch.toRegex(output)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ * ``` - * @param {String} `pattern` Glob pattern to use for matching. - * @param {String} `string` String to match - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`. + * @param {String} `source` Regular expression source string. + * @param {Object} `options` + * @return {RegExp} * @api public */ -micromatch.capture = function(pattern, str, options) { - var re = micromatch.makeRe(pattern, extend({capture: true}, options)); - var unixify = utils.unixify(options); - - function match() { - return function(string) { - var match = re.exec(unixify(string)); - if (!match) { - return null; - } - - return match.slice(1); - }; +picomatch.toRegex = (source, options) => { + try { + const opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); + } catch (err) { + if (options && options.debug === true) throw err; + return /$^/; } - - var capture = memoize('capture', pattern, options, match); - return capture(str); }; /** - * Create a regular expression from the given glob `pattern`. - * - * ```js - * var mm = require('micromatch'); - * mm.makeRe(pattern[, options]); - * - * console.log(mm.makeRe('*.js')); - * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ - * ``` - * @param {String} `pattern` A glob pattern to convert to regex. - * @param {Object} `options` See available [options](#options) for changing how matches are performed. - * @return {RegExp} Returns a regex created from the given pattern. - * @api public + * Picomatch constants. + * @return {Object} */ -micromatch.makeRe = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } - - if (pattern.length > MAX_LENGTH) { - throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); - } - - function makeRe() { - var result = micromatch.create(pattern, options); - var ast_array = []; - var output = result.map(function(obj) { - obj.ast.state = obj.state; - ast_array.push(obj.ast); - return obj.output; - }); - - var regex = toRegex(output.join('|'), options); - Object.defineProperty(regex, 'result', { - configurable: true, - enumerable: false, - value: ast_array - }); - return regex; - } - - return memoize('makeRe', pattern, options, makeRe); -}; +picomatch.constants = constants; /** - * Expand the given brace `pattern`. - * - * ```js - * var mm = require('micromatch'); - * console.log(mm.braces('foo/{a,b}/bar')); - * //=> ['foo/(a|b)/bar'] - * - * console.log(mm.braces('foo/{a,b}/bar', {expand: true})); - * //=> ['foo/(a|b)/bar'] - * ``` - * @param {String} `pattern` String with brace pattern to expand. - * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options. - * @return {Array} - * @api public + * Expose "picomatch" */ -micromatch.braces = function(pattern, options) { - if (typeof pattern !== 'string' && !Array.isArray(pattern)) { - throw new TypeError('expected pattern to be an array or string'); - } - - function expand() { - if (options && options.nobrace === true || !/\{.*\}/.test(pattern)) { - return utils.arrayify(pattern); - } - return braces(pattern, options); - } +module.exports = picomatch; - return memoize('braces', pattern, options, expand); -}; -/** - * Proxy to the [micromatch.braces](#method), for parity with - * minimatch. - */ +/***/ }), -micromatch.braceExpand = function(pattern, options) { - var opts = extend({}, options, {expand: true}); - return micromatch.braces(pattern, opts); -}; +/***/ "../../node_modules/picomatch/lib/scan.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Parses the given glob `pattern` and returns an array of abstract syntax - * trees (ASTs), with the compiled `output` and optional source `map` on - * each AST. - * - * ```js - * var mm = require('micromatch'); - * mm.create(pattern[, options]); - * - * console.log(mm.create('abc/*.js')); - * // [{ options: { source: 'string', sourcemap: true }, - * // state: {}, - * // compilers: - * // { ... }, - * // output: '(\\.[\\\\\\/])?abc\\/(?!\\.)(?=.)[^\\/]*?\\.js', - * // ast: - * // { type: 'root', - * // errors: [], - * // nodes: - * // [ ... ], - * // dot: false, - * // input: 'abc/*.js' }, - * // parsingErrors: [], - * // map: - * // { version: 3, - * // sources: [ 'string' ], - * // names: [], - * // mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE', - * // sourcesContent: [ 'abc/*.js' ] }, - * // position: { line: 1, column: 28 }, - * // content: {}, - * // files: {}, - * // idx: 6 }] - * ``` - * @param {String} `pattern` Glob pattern to parse and compile. - * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed. - * @return {Object} Returns an object with the parsed AST, compiled string and optional source map. - * @api public - */ +"use strict"; -micromatch.create = function(pattern, options) { - return memoize('create', pattern, options, function() { - function create(str, opts) { - return micromatch.compile(micromatch.parse(str, opts), opts); - } - pattern = micromatch.braces(pattern, options); - var len = pattern.length; - var idx = -1; - var res = []; +const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); +const { + CHAR_ASTERISK, /* * */ + CHAR_AT, /* @ */ + CHAR_BACKWARD_SLASH, /* \ */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_EXCLAMATION_MARK, /* ! */ + CHAR_FORWARD_SLASH, /* / */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_PLUS, /* + */ + CHAR_QUESTION_MARK, /* ? */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_RIGHT_SQUARE_BRACKET /* ] */ +} = __webpack_require__("../../node_modules/picomatch/lib/constants.js"); - while (++idx < len) { - res.push(create(pattern[idx], options)); - } - return res; - }); +const isPathSeparator = code => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; }; -/** - * Parse the given `str` with the given `options`. - * - * ```js - * var mm = require('micromatch'); - * mm.parse(pattern[, options]); - * - * var ast = mm.parse('a/{b,c}/d'); - * console.log(ast); - * // { type: 'root', - * // errors: [], - * // input: 'a/{b,c}/d', - * // nodes: - * // [ { type: 'bos', val: '' }, - * // { type: 'text', val: 'a/' }, - * // { type: 'brace', - * // nodes: - * // [ { type: 'brace.open', val: '{' }, - * // { type: 'text', val: 'b,c' }, - * // { type: 'brace.close', val: '}' } ] }, - * // { type: 'text', val: '/d' }, - * // { type: 'eos', val: '' } ] } - * ``` - * @param {String} `str` - * @param {Object} `options` - * @return {Object} Returns an AST - * @api public - */ - -micromatch.parse = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } - - function parse() { - var snapdragon = utils.instantiate(null, options); - parsers(snapdragon, options); - - var ast = snapdragon.parse(pattern, options); - utils.define(ast, 'snapdragon', snapdragon); - ast.input = pattern; - return ast; +const depth = token => { + if (token.isPrefix !== true) { + token.depth = token.isGlobstar ? Infinity : 1; } - - return memoize('parse', pattern, options, parse); }; /** - * Compile the given `ast` or string with the given `options`. + * Quickly scans a glob pattern and returns an object with a handful of + * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), + * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not + * with `!(`) and `negatedExtglob` (true if the path starts with `!(`). * * ```js - * var mm = require('micromatch'); - * mm.compile(ast[, options]); - * - * var ast = mm.parse('a/{b,c}/d'); - * console.log(mm.compile(ast)); - * // { options: { source: 'string' }, - * // state: {}, - * // compilers: - * // { eos: [Function], - * // noop: [Function], - * // bos: [Function], - * // brace: [Function], - * // 'brace.open': [Function], - * // text: [Function], - * // 'brace.close': [Function] }, - * // output: [ 'a/(b|c)/d' ], - * // ast: - * // { ... }, - * // parsingErrors: [] } + * const pm = require('picomatch'); + * console.log(pm.scan('foo/bar/*.js')); + * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } * ``` - * @param {Object|String} `ast` + * @param {String} `str` * @param {Object} `options` - * @return {Object} Returns an object that has an `output` property with the compiled string. + * @return {Object} Returns an object with tokens and regex source string. * @api public */ -micromatch.compile = function(ast, options) { - if (typeof ast === 'string') { - ast = micromatch.parse(ast, options); - } - - return memoize('compile', ast.input, options, function() { - var snapdragon = utils.instantiate(ast, options); - compilers(snapdragon, options); - return snapdragon.compile(ast, options); - }); -}; +const scan = (input, options) => { + const opts = options || {}; -/** - * Clear the regex cache. - * - * ```js - * mm.clearCache(); - * ``` - * @api public - */ + const length = input.length - 1; + const scanToEnd = opts.parts === true || opts.scanToEnd === true; + const slashes = []; + const tokens = []; + const parts = []; -micromatch.clearCache = function() { - micromatch.cache.caches = {}; -}; + let str = input; + let index = -1; + let start = 0; + let lastIndex = 0; + let isBrace = false; + let isBracket = false; + let isGlob = false; + let isExtglob = false; + let isGlobstar = false; + let braceEscaped = false; + let backslashes = false; + let negated = false; + let negatedExtglob = false; + let finished = false; + let braces = 0; + let prev; + let code; + let token = { value: '', depth: 0, isGlob: false }; -/** - * Returns true if the given value is effectively an empty string - */ + const eos = () => index >= length; + const peek = () => str.charCodeAt(index + 1); + const advance = () => { + prev = code; + return str.charCodeAt(++index); + }; -function isEmptyString(val) { - return String(val) === '' || String(val) === './'; -} + while (index < length) { + code = advance(); + let next; -/** - * Compose a matcher function with the given patterns. - * This allows matcher functions to be compiled once and - * called multiple times. - */ + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); -function compose(patterns, options, matcher) { - var matchers; - - return memoize('compose', String(patterns), options, function() { - return function(file) { - // delay composition until it's invoked the first time, - // after that it won't be called again - if (!matchers) { - matchers = []; - for (var i = 0; i < patterns.length; i++) { - matchers.push(matcher(patterns[i], options)); - } + if (code === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; } + continue; + } - var len = matchers.length; - while (len--) { - if (matchers[len](file) === true) { - return true; + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; + + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; } - } - return false; - }; - }); -} -/** - * Memoize a generated regex or function. A unique key is generated - * from the `type` (usually method name), the `pattern`, and - * user-defined options. - */ + if (code === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } -function memoize(type, pattern, options, fn) { - var key = utils.createKey(type + '=' + pattern, options); + if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; - if (options && options.cache === false) { - return fn(pattern, options); - } + if (scanToEnd === true) { + continue; + } - if (cache.has(type, key)) { - return cache.get(type, key); - } + break; + } - var val = fn(pattern, options); - cache.set(type, key, val); - return val; -} + if (braceEscaped !== true && code === CHAR_COMMA) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; -/** - * Expose compiler, parser and cache on `micromatch` - */ + if (scanToEnd === true) { + continue; + } -micromatch.compilers = compilers; -micromatch.parsers = parsers; -micromatch.caches = cache.caches; + break; + } -/** - * Expose `micromatch` - * @type {Function} - */ + if (code === CHAR_RIGHT_CURLY_BRACE) { + braces--; -module.exports = micromatch; + if (braces === 0) { + braceEscaped = false; + isBrace = token.isBrace = true; + finished = true; + break; + } + } + } + if (scanToEnd === true) { + continue; + } -/***/ }), + break; + } -/***/ "../../node_modules/micromatch/lib/cache.js": -/***/ (function(module, exports, __webpack_require__) { + if (code === CHAR_FORWARD_SLASH) { + slashes.push(index); + tokens.push(token); + token = { value: '', depth: 0, isGlob: false }; -module.exports = new (__webpack_require__("../../node_modules/fragment-cache/index.js"))(); + if (finished === true) continue; + if (prev === CHAR_DOT && index === (start + 1)) { + start += 2; + continue; + } + lastIndex = index + 1; + continue; + } -/***/ }), + if (opts.noext !== true) { + const isExtglobChar = code === CHAR_PLUS + || code === CHAR_AT + || code === CHAR_ASTERISK + || code === CHAR_QUESTION_MARK + || code === CHAR_EXCLAMATION_MARK; -/***/ "../../node_modules/micromatch/lib/compilers.js": -/***/ (function(module, exports, __webpack_require__) { + if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + isExtglob = token.isExtglob = true; + finished = true; + if (code === CHAR_EXCLAMATION_MARK && index === start) { + negatedExtglob = true; + } -"use strict"; + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + if (code === CHAR_RIGHT_PARENTHESES) { + isGlob = token.isGlob = true; + finished = true; + break; + } + } + continue; + } + break; + } + } -var nanomatch = __webpack_require__("../../node_modules/nanomatch/index.js"); -var extglob = __webpack_require__("../../node_modules/extglob/index.js"); + if (code === CHAR_ASTERISK) { + if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; + isGlob = token.isGlob = true; + finished = true; -module.exports = function(snapdragon) { - var compilers = snapdragon.compiler.compilers; - var opts = snapdragon.options; + if (scanToEnd === true) { + continue; + } + break; + } - // register nanomatch compilers - snapdragon.use(nanomatch.compilers); + if (code === CHAR_QUESTION_MARK) { + isGlob = token.isGlob = true; + finished = true; - // get references to some specific nanomatch compilers before they - // are overridden by the extglob and/or custom compilers - var escape = compilers.escape; - var qmark = compilers.qmark; - var slash = compilers.slash; - var star = compilers.star; - var text = compilers.text; - var plus = compilers.plus; - var dot = compilers.dot; + if (scanToEnd === true) { + continue; + } + break; + } - // register extglob compilers or escape exglobs if disabled - if (opts.extglob === false || opts.noext === true) { - snapdragon.compiler.use(escapeExtglobs); - } else { - snapdragon.use(extglob.compilers); - } + if (code === CHAR_LEFT_SQUARE_BRACKET) { + while (eos() !== true && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } - snapdragon.use(function() { - this.options.star = this.options.star || function(/*node*/) { - return '[^\\\\/]*?'; - }; - }); + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + isBracket = token.isBracket = true; + isGlob = token.isGlob = true; + finished = true; + break; + } + } - // custom micromatch compilers - snapdragon.compiler + if (scanToEnd === true) { + continue; + } - // reset referenced compiler - .set('dot', dot) - .set('escape', escape) - .set('plus', plus) - .set('slash', slash) - .set('qmark', qmark) - .set('star', star) - .set('text', text); -}; + break; + } -function escapeExtglobs(compiler) { - compiler.set('paren', function(node) { - var val = ''; - visit(node, function(tok) { - if (tok.val) val += (/^\W/.test(tok.val) ? '\\' : '') + tok.val; - }); - return this.emit(val, node); - }); + if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { + negated = token.negated = true; + start++; + continue; + } - /** - * Visit `node` with the given `fn` - */ + if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; - function visit(node, fn) { - return node.nodes ? mapVisit(node.nodes, fn) : fn(node); - } + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_LEFT_PARENTHESES) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } - /** - * Map visit over array of `nodes`. - */ + if (code === CHAR_RIGHT_PARENTHESES) { + finished = true; + break; + } + } + continue; + } + break; + } + + if (isGlob === true) { + finished = true; + + if (scanToEnd === true) { + continue; + } - function mapVisit(nodes, fn) { - var len = nodes.length; - var idx = -1; - while (++idx < len) { - visit(nodes[idx], fn); + break; } } -} + if (opts.noext === true) { + isExtglob = false; + isGlob = false; + } -/***/ }), + let base = str; + let prefix = ''; + let glob = ''; -/***/ "../../node_modules/micromatch/lib/parsers.js": -/***/ (function(module, exports, __webpack_require__) { + if (start > 0) { + prefix = str.slice(0, start); + str = str.slice(start); + lastIndex -= start; + } -"use strict"; + if (base && isGlob === true && lastIndex > 0) { + base = str.slice(0, lastIndex); + glob = str.slice(lastIndex); + } else if (isGlob === true) { + base = ''; + glob = str; + } else { + base = str; + } + if (base && base !== '' && base !== '/' && base !== str) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); + } + } -var extglob = __webpack_require__("../../node_modules/extglob/index.js"); -var nanomatch = __webpack_require__("../../node_modules/nanomatch/index.js"); -var regexNot = __webpack_require__("../../node_modules/regex-not/index.js"); -var toRegex = __webpack_require__("../../node_modules/to-regex/index.js"); -var not; + if (opts.unescape === true) { + if (glob) glob = utils.removeBackslashes(glob); -/** - * Characters to use in negation regex (we want to "not" match - * characters that are matched by other parsers) - */ + if (base && backslashes === true) { + base = utils.removeBackslashes(base); + } + } -var TEXT = '([!@*?+]?\\(|\\)|\\[:?(?=.*?:?\\])|:?\\]|[*+?!^$.\\\\/])+'; -var createNotRegex = function(opts) { - return not || (not = textRegex(TEXT)); -}; + const state = { + prefix, + input, + start, + base, + glob, + isBrace, + isBracket, + isGlob, + isExtglob, + isGlobstar, + negated, + negatedExtglob + }; -/** - * Parsers - */ + if (opts.tokens === true) { + state.maxDepth = 0; + if (!isPathSeparator(code)) { + tokens.push(token); + } + state.tokens = tokens; + } -module.exports = function(snapdragon) { - var parsers = snapdragon.parser.parsers; - - // register nanomatch parsers - snapdragon.use(nanomatch.parsers); - - // get references to some specific nanomatch parsers before they - // are overridden by the extglob and/or parsers - var escape = parsers.escape; - var slash = parsers.slash; - var qmark = parsers.qmark; - var plus = parsers.plus; - var star = parsers.star; - var dot = parsers.dot; - - // register extglob parsers - snapdragon.use(extglob.parsers); - - // custom micromatch parsers - snapdragon.parser - .use(function() { - // override "notRegex" created in nanomatch parser - this.notRegex = /^\!+(?!\()/; - }) - // reset the referenced parsers - .capture('escape', escape) - .capture('slash', slash) - .capture('qmark', qmark) - .capture('star', star) - .capture('plus', plus) - .capture('dot', dot) + if (opts.parts === true || opts.tokens === true) { + let prevIndex; - /** - * Override `text` parser - */ + for (let idx = 0; idx < slashes.length; idx++) { + const n = prevIndex ? prevIndex + 1 : start; + const i = slashes[idx]; + const value = input.slice(n, i); + if (opts.tokens) { + if (idx === 0 && start !== 0) { + tokens[idx].isPrefix = true; + tokens[idx].value = prefix; + } else { + tokens[idx].value = value; + } + depth(tokens[idx]); + state.maxDepth += tokens[idx].depth; + } + if (idx !== 0 || value !== '') { + parts.push(value); + } + prevIndex = i; + } - .capture('text', function() { - if (this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(createNotRegex(this.options)); - if (!m || !m[0]) return; + if (prevIndex && prevIndex + 1 < input.length) { + const value = input.slice(prevIndex + 1); + parts.push(value); - // escape regex boundary characters and simple brackets - var val = m[0].replace(/([[\]^$])/g, '\\$1'); + if (opts.tokens) { + tokens[tokens.length - 1].value = value; + depth(tokens[tokens.length - 1]); + state.maxDepth += tokens[tokens.length - 1].depth; + } + } - return pos({ - type: 'text', - val: val - }); - }); -}; + state.slashes = slashes; + state.parts = parts; + } -/** - * Create text regex - */ + return state; +}; -function textRegex(pattern) { - var notStr = regexNot.create(pattern, {contains: true, strictClose: false}); - var prefix = '(?:[\\^]|\\\\|'; - return toRegex(prefix + notStr + ')', {strictClose: false}); -} +module.exports = scan; /***/ }), -/***/ "../../node_modules/micromatch/lib/utils.js": +/***/ "../../node_modules/picomatch/lib/utils.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -var utils = module.exports; -var path = __webpack_require__("path"); - -/** - * Module dependencies - */ - -var Snapdragon = __webpack_require__("../../node_modules/snapdragon/index.js"); -utils.define = __webpack_require__("../../node_modules/micromatch/node_modules/define-property/index.js"); -utils.diff = __webpack_require__("../../node_modules/arr-diff/index.js"); -utils.extend = __webpack_require__("../../node_modules/micromatch/node_modules/extend-shallow/index.js"); -utils.pick = __webpack_require__("../../node_modules/object.pick/index.js"); -utils.typeOf = __webpack_require__("../../node_modules/kind-of/index.js"); -utils.unique = __webpack_require__("../../node_modules/array-unique/index.js"); +const path = __webpack_require__("path"); +const win32 = process.platform === 'win32'; +const { + REGEX_BACKSLASH, + REGEX_REMOVE_BACKSLASH, + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL +} = __webpack_require__("../../node_modules/picomatch/lib/constants.js"); -/** - * Returns true if the platform is windows, or `path.sep` is `\\`. - * This is defined as a function to allow `path.sep` to be set in unit tests, - * or by the user, if there is a reason to do so. - * @return {Boolean} - */ +exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); +exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); +exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); +exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); +exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); -utils.isWindows = function() { - return path.sep === '\\' || process.platform === 'win32'; +exports.removeBackslashes = str => { + return str.replace(REGEX_REMOVE_BACKSLASH, match => { + return match === '\\' ? '' : match; + }); }; -/** - * Get the `Snapdragon` instance to use - */ - -utils.instantiate = function(ast, options) { - var snapdragon; - // if an instance was created by `.parse`, use that instance - if (utils.typeOf(ast) === 'object' && ast.snapdragon) { - snapdragon = ast.snapdragon; - // if the user supplies an instance on options, use that instance - } else if (utils.typeOf(options) === 'object' && options.snapdragon) { - snapdragon = options.snapdragon; - // create a new instance - } else { - snapdragon = new Snapdragon(options); +exports.supportsLookbehinds = () => { + const segs = process.version.slice(1).split('.').map(Number); + if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { + return true; } + return false; +}; - utils.define(snapdragon, 'parse', function(str, options) { - var parsed = Snapdragon.prototype.parse.apply(this, arguments); - parsed.input = str; - - // escape unmatched brace/bracket/parens - var last = this.parser.stack.pop(); - if (last && this.options.strictErrors !== true) { - var open = last.nodes[0]; - var inner = last.nodes[1]; - if (last.type === 'bracket') { - if (inner.val.charAt(0) === '[') { - inner.val = '\\' + inner.val; - } - - } else { - open.val = '\\' + open.val; - var sibling = open.parent.nodes[1]; - if (sibling.type === 'star') { - sibling.loose = true; - } - } - } +exports.isWindows = options => { + if (options && typeof options.windows === 'boolean') { + return options.windows; + } + return win32 === true || path.sep === '\\'; +}; - // add non-enumerable parser reference - utils.define(parsed, 'parser', this.parser); - return parsed; - }); +exports.escapeLast = (input, char, lastIdx) => { + const idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) return input; + if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); + return `${input.slice(0, idx)}\\${input.slice(idx)}`; +}; - return snapdragon; +exports.removePrefix = (input, state = {}) => { + let output = input; + if (output.startsWith('./')) { + output = output.slice(2); + state.prefix = './'; + } + return output; }; -/** - * Create the key to use for memoization. The key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. - */ +exports.wrapOutput = (input, state = {}, options = {}) => { + const prepend = options.contains ? '' : '^'; + const append = options.contains ? '' : '$'; -utils.createKey = function(pattern, options) { - if (utils.typeOf(options) !== 'object') { - return pattern; - } - var val = pattern; - var keys = Object.keys(options); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - val += ';' + key + '=' + String(options[key]); + let output = `${prepend}(?:${input})${append}`; + if (state.negated === true) { + output = `(?:^(?!${output}).*$)`; } - return val; + return output; }; -/** - * Cast `val` to an array - * @return {Array} - */ -utils.arrayify = function(val) { - if (typeof val === 'string') return [val]; - return val ? (Array.isArray(val) ? val : [val]) : []; -}; +/***/ }), -/** - * Return true if `val` is a non-empty string - */ +/***/ "../../node_modules/pify/index.js": +/***/ (function(module, exports, __webpack_require__) { -utils.isString = function(val) { - return typeof val === 'string'; -}; +"use strict"; -/** - * Return true if `val` is a non-empty string - */ -utils.isObject = function(val) { - return utils.typeOf(val) === 'object'; -}; +const processFn = (fn, options) => function (...args) { + const P = options.promiseModule; -/** - * Returns true if the given `str` has special characters - */ + return new P((resolve, reject) => { + if (options.multiArgs) { + args.push((...result) => { + if (options.errorFirst) { + if (result[0]) { + reject(result); + } else { + result.shift(); + resolve(result); + } + } else { + resolve(result); + } + }); + } else if (options.errorFirst) { + args.push((error, result) => { + if (error) { + reject(error); + } else { + resolve(result); + } + }); + } else { + args.push(resolve); + } -utils.hasSpecialChars = function(str) { - return /(?:(?:(^|\/)[!.])|[*?+()|\[\]{}]|[+@]\()/.test(str); + fn.apply(this, args); + }); }; -/** - * Escape regex characters in the given string - */ +module.exports = (input, options) => { + options = Object.assign({ + exclude: [/.+(Sync|Stream)$/], + errorFirst: true, + promiseModule: Promise + }, options); -utils.escapeRegex = function(str) { - return str.replace(/[-[\]{}()^$|*+?.\\\/\s]/g, '\\$&'); -}; + const objType = typeof input; + if (!(input !== null && (objType === 'object' || objType === 'function'))) { + throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${input === null ? 'null' : objType}\``); + } -/** - * Normalize slashes in the given filepath. - * - * @param {String} `filepath` - * @return {String} - */ + const filter = key => { + const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); + return options.include ? options.include.some(match) : !options.exclude.some(match); + }; -utils.toPosixPath = function(str) { - return str.replace(/\\+/g, '/'); -}; + let ret; + if (objType === 'function') { + ret = function (...args) { + return options.excludeMain ? input(...args) : processFn(input, options).apply(this, args); + }; + } else { + ret = Object.create(Object.getPrototypeOf(input)); + } -/** - * Strip backslashes before special characters in a string. - * - * @param {String} `str` - * @return {String} - */ + for (const key in input) { // eslint-disable-line guard-for-in + const property = input[key]; + ret[key] = typeof property === 'function' && filter(key) ? processFn(property, options) : property; + } -utils.unescape = function(str) { - return utils.toPosixPath(str.replace(/\\(?=[*+?!.])/g, '')); + return ret; }; -/** - * Strip the prefix from a filepath - * @param {String} `fp` - * @return {String} - */ -utils.stripPrefix = function(str) { - if (str.charAt(0) !== '.') { - return str; - } - var ch = str.charAt(1); - if (utils.isSlash(ch)) { - return str.slice(2); - } - return str; -}; +/***/ }), -/** - * Returns true if the given str is an escaped or - * unescaped path character - */ +/***/ "../../node_modules/pump/index.js": +/***/ (function(module, exports, __webpack_require__) { -utils.isSlash = function(str) { - return str === '/' || str === '\\/' || str === '\\' || str === '\\\\'; -}; +var once = __webpack_require__("../../node_modules/once/once.js") +var eos = __webpack_require__("../../node_modules/end-of-stream/index.js") +var fs = __webpack_require__("fs") // we only need fs to get the ReadStream and WriteStream prototypes -/** - * Returns a function that returns true if the given - * pattern matches or contains a `filepath` - * - * @param {String} `pattern` - * @return {Function} - */ +var noop = function () {} +var ancient = /^v?\.0/.test(process.version) -utils.matchPath = function(pattern, options) { - return (options && options.contains) - ? utils.containsPattern(pattern, options) - : utils.equalsPattern(pattern, options); -}; +var isFn = function (fn) { + return typeof fn === 'function' +} -/** - * Returns true if the given (original) filepath or unixified path are equal - * to the given pattern. - */ +var isFS = function (stream) { + if (!ancient) return false // newer node version do not need to care about fs is a special way + if (!fs) return false // browser + return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) +} -utils._equals = function(filepath, unixPath, pattern) { - return pattern === filepath || pattern === unixPath; -}; +var isRequest = function (stream) { + return stream.setHeader && isFn(stream.abort) +} -/** - * Returns true if the given (original) filepath or unixified path contain - * the given pattern. - */ +var destroyer = function (stream, reading, writing, callback) { + callback = once(callback) -utils._contains = function(filepath, unixPath, pattern) { - return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1; -}; + var closed = false + stream.on('close', function () { + closed = true + }) -/** - * Returns a function that returns true if the given - * pattern is the same as a given `filepath` - * - * @param {String} `pattern` - * @return {Function} - */ + eos(stream, {readable: reading, writable: writing}, function (err) { + if (err) return callback(err) + closed = true + callback() + }) -utils.equalsPattern = function(pattern, options) { - var unixify = utils.unixify(options); - options = options || {}; + var destroyed = false + return function (err) { + if (closed) return + if (destroyed) return + destroyed = true - return function fn(filepath) { - var equal = utils._equals(filepath, unixify(filepath), pattern); - if (equal === true || options.nocase !== true) { - return equal; - } - var lower = filepath.toLowerCase(); - return utils._equals(lower, unixify(lower), pattern); - }; -}; + if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks + if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want -/** - * Returns a function that returns true if the given - * pattern contains a `filepath` - * - * @param {String} `pattern` - * @return {Function} - */ + if (isFn(stream.destroy)) return stream.destroy() -utils.containsPattern = function(pattern, options) { - var unixify = utils.unixify(options); - options = options || {}; + callback(err || new Error('stream was destroyed')) + } +} - return function(filepath) { - var contains = utils._contains(filepath, unixify(filepath), pattern); - if (contains === true || options.nocase !== true) { - return contains; - } - var lower = filepath.toLowerCase(); - return utils._contains(lower, unixify(lower), pattern); - }; -}; +var call = function (fn) { + fn() +} -/** - * Returns a function that returns true if the given - * regex matches the `filename` of a file path. - * - * @param {RegExp} `re` Matching regex - * @return {Function} - */ +var pipe = function (from, to) { + return from.pipe(to) +} -utils.matchBasename = function(re) { - return function(filepath) { - return re.test(path.basename(filepath)); - }; -}; +var pump = function () { + var streams = Array.prototype.slice.call(arguments) + var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop -/** - * Determines the filepath to return based on the provided options. - * @return {any} - */ + if (Array.isArray(streams[0])) streams = streams[0] + if (streams.length < 2) throw new Error('pump requires two streams per minimum') -utils.value = function(str, unixify, options) { - if (options && options.unixify === false) { - return str; - } - return unixify(str); -}; + var error + var destroys = streams.map(function (stream, i) { + var reading = i < streams.length - 1 + var writing = i > 0 + return destroyer(stream, reading, writing, function (err) { + if (!error) error = err + if (err) destroys.forEach(call) + if (reading) return + destroys.forEach(call) + callback(error) + }) + }) -/** - * Returns a function that normalizes slashes in a string to forward - * slashes, strips `./` from beginning of paths, and optionally unescapes - * special characters. - * @return {Function} - */ + return streams.reduce(pipe) +} -utils.unixify = function(options) { - options = options || {}; - return function(filepath) { - if (utils.isWindows() || options.unixify === true) { - filepath = utils.toPosixPath(filepath); - } - if (options.stripPrefix !== false) { - filepath = utils.stripPrefix(filepath); - } - if (options.unescape === true) { - filepath = utils.unescape(filepath); - } - return filepath; - }; -}; +module.exports = pump /***/ }), -/***/ "../../node_modules/micromatch/node_modules/braces/index.js": +/***/ "../../node_modules/read-pkg/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +const {promisify} = __webpack_require__("util"); +const fs = __webpack_require__("fs"); +const path = __webpack_require__("path"); +const parseJson = __webpack_require__("../../node_modules/parse-json/index.js"); -/** - * Module dependencies - */ +const readFileAsync = promisify(fs.readFile); -var toRegex = __webpack_require__("../../node_modules/to-regex/index.js"); -var unique = __webpack_require__("../../node_modules/array-unique/index.js"); -var extend = __webpack_require__("../../node_modules/micromatch/node_modules/braces/node_modules/extend-shallow/index.js"); +module.exports = async options => { + options = { + cwd: process.cwd(), + normalize: true, + ...options + }; -/** - * Local dependencies - */ + const filePath = path.resolve(options.cwd, 'package.json'); + const json = parseJson(await readFileAsync(filePath, 'utf8')); -var compilers = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/compilers.js"); -var parsers = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/parsers.js"); -var Braces = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/braces.js"); -var utils = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/utils.js"); -var MAX_LENGTH = 1024 * 64; -var cache = {}; + if (options.normalize) { + __webpack_require__("../../node_modules/normalize-package-data/lib/normalize.js")(json); + } -/** - * Convert the given `braces` pattern into a regex-compatible string. By default, only one string is generated for every input string. Set `options.expand` to true to return an array of patterns (similar to Bash or minimatch. Before using `options.expand`, it's recommended that you read the [performance notes](#performance)). - * - * ```js - * var braces = require('braces'); - * console.log(braces('{a,b,c}')); - * //=> ['(a|b|c)'] - * - * console.log(braces('{a,b,c}', {expand: true})); - * //=> ['a', 'b', 'c'] - * ``` - * @param {String} `str` - * @param {Object} `options` - * @return {String} - * @api public - */ + return json; +}; -function braces(pattern, options) { - var key = utils.createKey(String(pattern), options); - var arr = []; +module.exports.sync = options => { + options = { + cwd: process.cwd(), + normalize: true, + ...options + }; - var disabled = options && options.cache === false; - if (!disabled && cache.hasOwnProperty(key)) { - return cache[key]; - } + const filePath = path.resolve(options.cwd, 'package.json'); + const json = parseJson(fs.readFileSync(filePath, 'utf8')); - if (Array.isArray(pattern)) { - for (var i = 0; i < pattern.length; i++) { - arr.push.apply(arr, braces.create(pattern[i], options)); - } - } else { - arr = braces.create(pattern, options); - } + if (options.normalize) { + __webpack_require__("../../node_modules/normalize-package-data/lib/normalize.js")(json); + } - if (options && options.nodupes === true) { - arr = unique(arr); - } + return json; +}; - if (!disabled) { - cache[key] = arr; - } - return arr; -} -/** - * Expands a brace pattern into an array. This method is called by the main [braces](#braces) function when `options.expand` is true. Before using this method it's recommended that you read the [performance notes](#performance)) and advantages of using [.optimize](#optimize) instead. - * - * ```js - * var braces = require('braces'); - * console.log(braces.expand('a/{b,c}/d')); - * //=> ['a/b/d', 'a/c/d']; - * ``` - * @param {String} `pattern` Brace pattern - * @param {Object} `options` - * @return {Array} Returns an array of expanded values. - * @api public - */ +/***/ }), -braces.expand = function(pattern, options) { - return braces.create(pattern, extend({}, options, {expand: true})); -}; +/***/ "../../node_modules/resolve/index.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Expands a brace pattern into a regex-compatible, optimized string. This method is called by the main [braces](#braces) function by default. - * - * ```js - * var braces = require('braces'); - * console.log(braces.expand('a/{b,c}/d')); - * //=> ['a/(b|c)/d'] - * ``` - * @param {String} `pattern` Brace pattern - * @param {Object} `options` - * @return {Array} Returns an array of expanded values. - * @api public - */ +var async = __webpack_require__("../../node_modules/resolve/lib/async.js"); +async.core = __webpack_require__("../../node_modules/resolve/lib/core.js"); +async.isCore = __webpack_require__("../../node_modules/resolve/lib/is-core.js"); +async.sync = __webpack_require__("../../node_modules/resolve/lib/sync.js"); -braces.optimize = function(pattern, options) { - return braces.create(pattern, options); -}; +module.exports = async; -/** - * Processes a brace pattern and returns either an expanded array (if `options.expand` is true), a highly optimized regex-compatible string. This method is called by the main [braces](#braces) function. - * - * ```js - * var braces = require('braces'); - * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) - * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' - * ``` - * @param {String} `pattern` Brace pattern - * @param {Object} `options` - * @return {Array} Returns an array of expanded values. - * @api public - */ -braces.create = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } +/***/ }), - var maxLength = (options && options.maxLength) || MAX_LENGTH; - if (pattern.length >= maxLength) { - throw new Error('expected pattern to be less than ' + maxLength + ' characters'); - } +/***/ "../../node_modules/resolve/lib/async.js": +/***/ (function(module, exports, __webpack_require__) { - function create() { - if (pattern === '' || pattern.length < 3) { - return [pattern]; - } +var fs = __webpack_require__("fs"); +var getHomedir = __webpack_require__("../../node_modules/resolve/lib/homedir.js"); +var path = __webpack_require__("path"); +var caller = __webpack_require__("../../node_modules/resolve/lib/caller.js"); +var nodeModulesPaths = __webpack_require__("../../node_modules/resolve/lib/node-modules-paths.js"); +var normalizeOptions = __webpack_require__("../../node_modules/resolve/lib/normalize-options.js"); +var isCore = __webpack_require__("../../node_modules/is-core-module/index.js"); - if (utils.isEmptySets(pattern)) { - return []; - } +var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; - if (utils.isQuotedString(pattern)) { - return [pattern.slice(1, -1)]; - } +var homedir = getHomedir(); +var defaultPaths = function () { + return [ + path.join(homedir, '.node_modules'), + path.join(homedir, '.node_libraries') + ]; +}; - var proto = new Braces(options); - var result = !options || options.expand !== true - ? proto.optimize(pattern, options) - : proto.expand(pattern, options); +var defaultIsFile = function isFile(file, cb) { + fs.stat(file, function (err, stat) { + if (!err) { + return cb(null, stat.isFile() || stat.isFIFO()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); +}; - // get the generated pattern(s) - var arr = result.output; +var defaultIsDir = function isDirectory(dir, cb) { + fs.stat(dir, function (err, stat) { + if (!err) { + return cb(null, stat.isDirectory()); + } + if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); + return cb(err); + }); +}; - // filter out empty strings if specified - if (options && options.noempty === true) { - arr = arr.filter(Boolean); - } +var defaultRealpath = function realpath(x, cb) { + realpathFS(x, function (realpathErr, realPath) { + if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr); + else cb(null, realpathErr ? x : realPath); + }); +}; - // filter out duplicates if specified - if (options && options.nodupes === true) { - arr = unique(arr); +var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) { + if (opts && opts.preserveSymlinks === false) { + realpath(x, cb); + } else { + cb(null, x); } +}; - Object.defineProperty(arr, 'result', { - enumerable: false, - value: result +var defaultReadPackage = function defaultReadPackage(readFile, pkgfile, cb) { + readFile(pkgfile, function (readFileErr, body) { + if (readFileErr) cb(readFileErr); + else { + try { + var pkg = JSON.parse(body); + cb(null, pkg); + } catch (jsonErr) { + cb(null); + } + } }); - - return arr; - } - - return memoize('create', pattern, options, create); }; -/** - * Create a regular expression from the given string `pattern`. - * - * ```js - * var braces = require('braces'); - * - * console.log(braces.makeRe('id-{200..300}')); - * //=> /^(?:id-(20[0-9]|2[1-9][0-9]|300))$/ - * ``` - * @param {String} `pattern` The pattern to convert to regex. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ +var getPackageCandidates = function getPackageCandidates(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; +}; -braces.makeRe = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } +module.exports = function resolve(x, options, callback) { + var cb = callback; + var opts = options; + if (typeof options === 'function') { + cb = opts; + opts = {}; + } + if (typeof x !== 'string') { + var err = new TypeError('Path must be a string.'); + return process.nextTick(function () { + cb(err); + }); + } - var maxLength = (options && options.maxLength) || MAX_LENGTH; - if (pattern.length >= maxLength) { - throw new Error('expected pattern to be less than ' + maxLength + ' characters'); - } + opts = normalizeOptions(x, opts); - function makeRe() { - var arr = braces(pattern, options); - var opts = extend({strictErrors: false}, options); - return toRegex(arr, opts); - } + var isFile = opts.isFile || defaultIsFile; + var isDirectory = opts.isDirectory || defaultIsDir; + var readFile = opts.readFile || fs.readFile; + var realpath = opts.realpath || defaultRealpath; + var readPackage = opts.readPackage || defaultReadPackage; + if (opts.readFile && opts.readPackage) { + var conflictErr = new TypeError('`readFile` and `readPackage` are mutually exclusive.'); + return process.nextTick(function () { + cb(conflictErr); + }); + } + var packageIterator = opts.packageIterator; - return memoize('makeRe', pattern, options, makeRe); -}; + var extensions = opts.extensions || ['.js']; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; -/** - * Parse the given `str` with the given `options`. - * - * ```js - * var braces = require('braces'); - * var ast = braces.parse('a/{b,c}/d'); - * console.log(ast); - * // { type: 'root', - * // errors: [], - * // input: 'a/{b,c}/d', - * // nodes: - * // [ { type: 'bos', val: '' }, - * // { type: 'text', val: 'a/' }, - * // { type: 'brace', - * // nodes: - * // [ { type: 'brace.open', val: '{' }, - * // { type: 'text', val: 'b,c' }, - * // { type: 'brace.close', val: '}' } ] }, - * // { type: 'text', val: '/d' }, - * // { type: 'eos', val: '' } ] } - * ``` - * @param {String} `pattern` Brace pattern to parse - * @param {Object} `options` - * @return {Object} Returns an AST - * @api public - */ + opts.paths = opts.paths || defaultPaths(); -braces.parse = function(pattern, options) { - var proto = new Braces(options); - return proto.parse(pattern, options); -}; + // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory + var absoluteStart = path.resolve(basedir); -/** - * Compile the given `ast` or string with the given `options`. - * - * ```js - * var braces = require('braces'); - * var ast = braces.parse('a/{b,c}/d'); - * console.log(braces.compile(ast)); - * // { options: { source: 'string' }, - * // state: {}, - * // compilers: - * // { eos: [Function], - * // noop: [Function], - * // bos: [Function], - * // brace: [Function], - * // 'brace.open': [Function], - * // text: [Function], - * // 'brace.close': [Function] }, - * // output: [ 'a/(b|c)/d' ], - * // ast: - * // { ... }, - * // parsingErrors: [] } - * ``` - * @param {Object|String} `ast` AST from [.parse](#parse). If a string is passed it will be parsed first. - * @param {Object} `options` - * @return {Object} Returns an object that has an `output` property with the compiled string. - * @api public - */ + maybeRealpath( + realpath, + absoluteStart, + opts, + function (err, realStart) { + if (err) cb(err); + else init(realStart); + } + ); -braces.compile = function(ast, options) { - var proto = new Braces(options); - return proto.compile(ast, options); -}; + var res; + function init(basedir) { + if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { + res = path.resolve(basedir, x); + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; + if ((/\/$/).test(x) && res === basedir) { + loadAsDirectory(res, opts.package, onfile); + } else loadAsFile(res, opts.package, onfile); + } else if (includeCoreModules && isCore(x)) { + return cb(null, x); + } else loadNodeModules(x, basedir, function (err, n, pkg) { + if (err) cb(err); + else if (n) { + return maybeRealpath(realpath, n, opts, function (err, realN) { + if (err) { + cb(err); + } else { + cb(null, realN, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); + } -/** - * Clear the regex cache. - * - * ```js - * braces.clearCache(); - * ``` - * @api public - */ + function onfile(err, m, pkg) { + if (err) cb(err); + else if (m) cb(null, m, pkg); + else loadAsDirectory(res, function (err, d, pkg) { + if (err) cb(err); + else if (d) { + maybeRealpath(realpath, d, opts, function (err, realD) { + if (err) { + cb(err); + } else { + cb(null, realD, pkg); + } + }); + } else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); + } -braces.clearCache = function() { - cache = braces.cache = {}; -}; + function loadAsFile(x, thePackage, callback) { + var loadAsFilePackage = thePackage; + var cb = callback; + if (typeof loadAsFilePackage === 'function') { + cb = loadAsFilePackage; + loadAsFilePackage = undefined; + } -/** - * Memoize a generated regex or function. A unique key is generated - * from the method name, pattern, and user-defined options. Set - * options.memoize to false to disable. - */ + var exts = [''].concat(extensions); + load(exts, x, loadAsFilePackage); -function memoize(type, pattern, options, fn) { - var key = utils.createKey(type + ':' + pattern, options); - var disabled = options && options.cache === false; - if (disabled) { - braces.clearCache(); - return fn(pattern, options); - } + function load(exts, x, loadPackage) { + if (exts.length === 0) return cb(null, undefined, loadPackage); + var file = x + exts[0]; - if (cache.hasOwnProperty(key)) { - return cache[key]; - } + var pkg = loadPackage; + if (pkg) onpkg(null, pkg); + else loadpkg(path.dirname(file), onpkg); - var res = fn(pattern, options); - cache[key] = res; - return res; -} + function onpkg(err, pkg_, dir) { + pkg = pkg_; + if (err) return cb(err); + if (dir && pkg && opts.pathFilter) { + var rfile = path.relative(dir, file); + var rel = rfile.slice(0, rfile.length - exts[0].length); + var r = opts.pathFilter(pkg, x, rel); + if (r) return load( + [''].concat(extensions.slice()), + path.resolve(dir, r), + pkg + ); + } + isFile(file, onex); + } + function onex(err, ex) { + if (err) return cb(err); + if (ex) return cb(null, file, pkg); + load(exts.slice(1), x, pkg); + } + } + } -/** - * Expose `Braces` constructor and methods - * @type {Function} - */ + function loadpkg(dir, cb) { + if (dir === '' || dir === '/') return cb(null); + if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { + return cb(null); + } + if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null); -braces.Braces = Braces; -braces.compilers = compilers; -braces.parsers = parsers; -braces.cache = cache; + maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) { + if (unwrapErr) return loadpkg(path.dirname(dir), cb); + var pkgfile = path.join(pkgdir, 'package.json'); + isFile(pkgfile, function (err, ex) { + // on err, ex is false + if (!ex) return loadpkg(path.dirname(dir), cb); -/** - * Expose `braces` - * @type {Function} - */ + readPackage(readFile, pkgfile, function (err, pkgParam) { + if (err) cb(err); -module.exports = braces; + var pkg = pkgParam; + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } + cb(null, pkg, dir); + }); + }); + }); + } -/***/ }), + function loadAsDirectory(x, loadAsDirectoryPackage, callback) { + var cb = callback; + var fpkg = loadAsDirectoryPackage; + if (typeof fpkg === 'function') { + cb = fpkg; + fpkg = opts.package; + } -/***/ "../../node_modules/micromatch/node_modules/braces/lib/braces.js": -/***/ (function(module, exports, __webpack_require__) { + maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) { + if (unwrapErr) return cb(unwrapErr); + var pkgfile = path.join(pkgdir, 'package.json'); + isFile(pkgfile, function (err, ex) { + if (err) return cb(err); + if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb); -"use strict"; + readPackage(readFile, pkgfile, function (err, pkgParam) { + if (err) return cb(err); + var pkg = pkgParam; -var extend = __webpack_require__("../../node_modules/micromatch/node_modules/braces/node_modules/extend-shallow/index.js"); -var Snapdragon = __webpack_require__("../../node_modules/snapdragon/index.js"); -var compilers = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/compilers.js"); -var parsers = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/parsers.js"); -var utils = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/utils.js"); + if (pkg && opts.packageFilter) { + pkg = opts.packageFilter(pkg, pkgfile); + } -/** - * Customize Snapdragon parser and renderer - */ + if (pkg && pkg.main) { + if (typeof pkg.main !== 'string') { + var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); + mainError.code = 'INVALID_PACKAGE_MAIN'; + return cb(mainError); + } + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; + } + loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb); -function Braces(options) { - this.options = extend({}, options); -} + var dir = path.resolve(x, pkg.main); + loadAsDirectory(dir, pkg, function (err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + loadAsFile(path.join(x, 'index'), pkg, cb); + }); + }); + return; + } -/** - * Initialize braces - */ + loadAsFile(path.join(x, '/index'), pkg, cb); + }); + }); + }); + } -Braces.prototype.init = function(options) { - if (this.isInitialized) return; - this.isInitialized = true; - var opts = utils.createOptions({}, this.options, options); - this.snapdragon = this.options.snapdragon || new Snapdragon(opts); - this.compiler = this.snapdragon.compiler; - this.parser = this.snapdragon.parser; + function processDirs(cb, dirs) { + if (dirs.length === 0) return cb(null, undefined); + var dir = dirs[0]; - compilers(this.snapdragon, opts); - parsers(this.snapdragon, opts); + isDirectory(path.dirname(dir), isdir); - /** - * Call Snapdragon `.parse` method. When AST is returned, we check to - * see if any unclosed braces are left on the stack and, if so, we iterate - * over the stack and correct the AST so that compilers are called in the correct - * order and unbalance braces are properly escaped. - */ + function isdir(err, isdir) { + if (err) return cb(err); + if (!isdir) return processDirs(cb, dirs.slice(1)); + loadAsFile(dir, opts.package, onfile); + } - utils.define(this.snapdragon, 'parse', function(pattern, options) { - var parsed = Snapdragon.prototype.parse.apply(this, arguments); - this.parser.ast.input = pattern; + function onfile(err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + loadAsDirectory(dir, opts.package, ondir); + } - var stack = this.parser.stack; - while (stack.length) { - addParent({type: 'brace.close', val: ''}, stack.pop()); + function ondir(err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + processDirs(cb, dirs.slice(1)); + } } - - function addParent(node, parent) { - utils.define(node, 'parent', parent); - parent.nodes.push(node); + function loadNodeModules(x, start, cb) { + var thunk = function () { return getPackageCandidates(x, start, opts); }; + processDirs( + cb, + packageIterator ? packageIterator(x, start, thunk, opts) : thunk() + ); } - - // add non-enumerable parser reference - utils.define(parsed, 'parser', this.parser); - return parsed; - }); }; -/** - * Decorate `.parse` method - */ -Braces.prototype.parse = function(ast, options) { - if (ast && typeof ast === 'object' && ast.nodes) return ast; - this.init(options); - return this.snapdragon.parse(ast, options); -}; +/***/ }), -/** - * Decorate `.compile` method - */ +/***/ "../../node_modules/resolve/lib/caller.js": +/***/ (function(module, exports) { -Braces.prototype.compile = function(ast, options) { - if (typeof ast === 'string') { - ast = this.parse(ast, options); - } else { - this.init(options); - } - return this.snapdragon.compile(ast, options); +module.exports = function () { + // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi + var origPrepareStackTrace = Error.prepareStackTrace; + Error.prepareStackTrace = function (_, stack) { return stack; }; + var stack = (new Error()).stack; + Error.prepareStackTrace = origPrepareStackTrace; + return stack[2].getFileName(); }; -/** - * Expand - */ -Braces.prototype.expand = function(pattern) { - var ast = this.parse(pattern, {expand: true}); - return this.compile(ast, {expand: true}); -}; +/***/ }), -/** - * Optimize - */ +/***/ "../../node_modules/resolve/lib/core.js": +/***/ (function(module, exports, __webpack_require__) { -Braces.prototype.optimize = function(pattern) { - var ast = this.parse(pattern, {optimize: true}); - return this.compile(ast, {optimize: true}); -}; +var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; -/** - * Expose `Braces` - */ +function specifierIncluded(specifier) { + var parts = specifier.split(' '); + var op = parts.length > 1 ? parts[0] : '='; + var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); -module.exports = Braces; + for (var i = 0; i < 3; ++i) { + var cur = parseInt(current[i] || 0, 10); + var ver = parseInt(versionParts[i] || 0, 10); + if (cur === ver) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + if (op === '<') { + return cur < ver; + } else if (op === '>=') { + return cur >= ver; + } + return false; + } + return op === '>='; +} +function matchesRange(range) { + var specifiers = range.split(/ ?&& ?/); + if (specifiers.length === 0) { return false; } + for (var i = 0; i < specifiers.length; ++i) { + if (!specifierIncluded(specifiers[i])) { return false; } + } + return true; +} -/***/ }), +function versionIncluded(specifierValue) { + if (typeof specifierValue === 'boolean') { return specifierValue; } + if (specifierValue && typeof specifierValue === 'object') { + for (var i = 0; i < specifierValue.length; ++i) { + if (matchesRange(specifierValue[i])) { return true; } + } + return false; + } + return matchesRange(specifierValue); +} -/***/ "../../node_modules/micromatch/node_modules/braces/lib/compilers.js": -/***/ (function(module, exports, __webpack_require__) { +var data = __webpack_require__("../../node_modules/resolve/lib/core.json"); -"use strict"; +var core = {}; +for (var mod in data) { // eslint-disable-line no-restricted-syntax + if (Object.prototype.hasOwnProperty.call(data, mod)) { + core[mod] = versionIncluded(data[mod]); + } +} +module.exports = core; -var utils = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/utils.js"); +/***/ }), -module.exports = function(braces, options) { - braces.compiler +/***/ "../../node_modules/resolve/lib/core.json": +/***/ (function(module) { - /** - * bos - */ +module.exports = JSON.parse("{\"assert\":true,\"node:assert\":[\">= 14.18 && < 15\",\">= 16\"],\"assert/strict\":\">= 15\",\"node:assert/strict\":\">= 16\",\"async_hooks\":\">= 8\",\"node:async_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"buffer_ieee754\":\">= 0.5 && < 0.9.7\",\"buffer\":true,\"node:buffer\":[\">= 14.18 && < 15\",\">= 16\"],\"child_process\":true,\"node:child_process\":[\">= 14.18 && < 15\",\">= 16\"],\"cluster\":\">= 0.5\",\"node:cluster\":[\">= 14.18 && < 15\",\">= 16\"],\"console\":true,\"node:console\":[\">= 14.18 && < 15\",\">= 16\"],\"constants\":true,\"node:constants\":[\">= 14.18 && < 15\",\">= 16\"],\"crypto\":true,\"node:crypto\":[\">= 14.18 && < 15\",\">= 16\"],\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"node:dgram\":[\">= 14.18 && < 15\",\">= 16\"],\"diagnostics_channel\":[\">= 14.17 && < 15\",\">= 15.1\"],\"node:diagnostics_channel\":[\">= 14.18 && < 15\",\">= 16\"],\"dns\":true,\"node:dns\":[\">= 14.18 && < 15\",\">= 16\"],\"dns/promises\":\">= 15\",\"node:dns/promises\":\">= 16\",\"domain\":\">= 0.7.12\",\"node:domain\":[\">= 14.18 && < 15\",\">= 16\"],\"events\":true,\"node:events\":[\">= 14.18 && < 15\",\">= 16\"],\"freelist\":\"< 6\",\"fs\":true,\"node:fs\":[\">= 14.18 && < 15\",\">= 16\"],\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"node:fs/promises\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_agent\":\">= 0.11.1\",\"node:_http_agent\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_client\":\">= 0.11.1\",\"node:_http_client\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_common\":\">= 0.11.1\",\"node:_http_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_incoming\":\">= 0.11.1\",\"node:_http_incoming\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_outgoing\":\">= 0.11.1\",\"node:_http_outgoing\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_server\":\">= 0.11.1\",\"node:_http_server\":[\">= 14.18 && < 15\",\">= 16\"],\"http\":true,\"node:http\":[\">= 14.18 && < 15\",\">= 16\"],\"http2\":\">= 8.8\",\"node:http2\":[\">= 14.18 && < 15\",\">= 16\"],\"https\":true,\"node:https\":[\">= 14.18 && < 15\",\">= 16\"],\"inspector\":\">= 8\",\"node:inspector\":[\">= 14.18 && < 15\",\">= 16\"],\"_linklist\":\"< 8\",\"module\":true,\"node:module\":[\">= 14.18 && < 15\",\">= 16\"],\"net\":true,\"node:net\":[\">= 14.18 && < 15\",\">= 16\"],\"node-inspect/lib/_inspect\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6 && < 12\",\"os\":true,\"node:os\":[\">= 14.18 && < 15\",\">= 16\"],\"path\":true,\"node:path\":[\">= 14.18 && < 15\",\">= 16\"],\"path/posix\":\">= 15.3\",\"node:path/posix\":\">= 16\",\"path/win32\":\">= 15.3\",\"node:path/win32\":\">= 16\",\"perf_hooks\":\">= 8.5\",\"node:perf_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"process\":\">= 1\",\"node:process\":[\">= 14.18 && < 15\",\">= 16\"],\"punycode\":\">= 0.5\",\"node:punycode\":[\">= 14.18 && < 15\",\">= 16\"],\"querystring\":true,\"node:querystring\":[\">= 14.18 && < 15\",\">= 16\"],\"readline\":true,\"node:readline\":[\">= 14.18 && < 15\",\">= 16\"],\"readline/promises\":\">= 17\",\"node:readline/promises\":\">= 17\",\"repl\":true,\"node:repl\":[\">= 14.18 && < 15\",\">= 16\"],\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"node:_stream_duplex\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_transform\":\">= 0.9.4\",\"node:_stream_transform\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_wrap\":\">= 1.4.1\",\"node:_stream_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_passthrough\":\">= 0.9.4\",\"node:_stream_passthrough\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_readable\":\">= 0.9.4\",\"node:_stream_readable\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_writable\":\">= 0.9.4\",\"node:_stream_writable\":[\">= 14.18 && < 15\",\">= 16\"],\"stream\":true,\"node:stream\":[\">= 14.18 && < 15\",\">= 16\"],\"stream/consumers\":\">= 16.7\",\"node:stream/consumers\":\">= 16.7\",\"stream/promises\":\">= 15\",\"node:stream/promises\":\">= 16\",\"stream/web\":\">= 16.5\",\"node:stream/web\":\">= 16.5\",\"string_decoder\":true,\"node:string_decoder\":[\">= 14.18 && < 15\",\">= 16\"],\"sys\":[\">= 0.4 && < 0.7\",\">= 0.8\"],\"node:sys\":[\">= 14.18 && < 15\",\">= 16\"],\"timers\":true,\"node:timers\":[\">= 14.18 && < 15\",\">= 16\"],\"timers/promises\":\">= 15\",\"node:timers/promises\":\">= 16\",\"_tls_common\":\">= 0.11.13\",\"node:_tls_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"node:_tls_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"tls\":true,\"node:tls\":[\">= 14.18 && < 15\",\">= 16\"],\"trace_events\":\">= 10\",\"node:trace_events\":[\">= 14.18 && < 15\",\">= 16\"],\"tty\":true,\"node:tty\":[\">= 14.18 && < 15\",\">= 16\"],\"url\":true,\"node:url\":[\">= 14.18 && < 15\",\">= 16\"],\"util\":true,\"node:util\":[\">= 14.18 && < 15\",\">= 16\"],\"util/types\":\">= 15.3\",\"node:util/types\":\">= 16\",\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/consarray\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/logreader\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8\":\">= 1\",\"node:v8\":[\">= 14.18 && < 15\",\">= 16\"],\"vm\":true,\"node:vm\":[\">= 14.18 && < 15\",\">= 16\"],\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"node:worker_threads\":[\">= 14.18 && < 15\",\">= 16\"],\"zlib\":\">= 0.5\",\"node:zlib\":[\">= 14.18 && < 15\",\">= 16\"]}"); - .set('bos', function() { - if (this.output) return; - this.ast.queue = isEscaped(this.ast) ? [this.ast.val] : []; - this.ast.count = 1; - }) +/***/ }), - /** - * Square brackets - */ +/***/ "../../node_modules/resolve/lib/homedir.js": +/***/ (function(module, exports, __webpack_require__) { - .set('bracket', function(node) { - var close = node.close; - var open = !node.escaped ? '[' : '\\['; - var negated = node.negated; - var inner = node.inner; +"use strict"; - inner = inner.replace(/\\(?=[\\\w]|$)/g, '\\\\'); - if (inner === ']-') { - inner = '\\]\\-'; - } - if (negated && inner.indexOf('.') === -1) { - inner += '.'; - } - if (negated && inner.indexOf('/') === -1) { - inner += '/'; - } +var os = __webpack_require__("os"); - var val = open + negated + inner + close; - var queue = node.parent.queue; - var last = utils.arrayify(queue.pop()); +// adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js - queue.push(utils.join(last, val)); - queue.push.apply(queue, []); - }) +module.exports = os.homedir || function homedir() { + var home = process.env.HOME; + var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME; - /** - * Brace - */ + if (process.platform === 'win32') { + return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null; + } - .set('brace', function(node) { - node.queue = isEscaped(node) ? [node.val] : []; - node.count = 1; - return this.mapVisit(node.nodes); - }) + if (process.platform === 'darwin') { + return home || (user ? '/Users/' + user : null); + } - /** - * Open - */ - - .set('brace.open', function(node) { - node.parent.open = node.val; - }) - - /** - * Inner - */ - - .set('text', function(node) { - var queue = node.parent.queue; - var escaped = node.escaped; - var segs = [node.val]; + if (process.platform === 'linux') { + return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens + } - if (node.optimize === false) { - options = utils.extend({}, options, {optimize: false}); - } + return home || null; +}; - if (node.multiplier > 1) { - node.parent.count *= node.multiplier; - } - if (options.quantifiers === true && utils.isQuantifier(node.val)) { - escaped = true; +/***/ }), - } else if (node.val.length > 1) { - if (isType(node.parent, 'brace') && !isEscaped(node)) { - var expanded = utils.expand(node.val, options); - segs = expanded.segs; +/***/ "../../node_modules/resolve/lib/is-core.js": +/***/ (function(module, exports, __webpack_require__) { - if (expanded.isOptimized) { - node.parent.isOptimized = true; - } +var isCoreModule = __webpack_require__("../../node_modules/is-core-module/index.js"); - // if nothing was expanded, we probably have a literal brace - if (!segs.length) { - var val = (expanded.val || node.val); - if (options.unescape !== false) { - // unescape unexpanded brace sequence/set separators - val = val.replace(/\\([,.])/g, '$1'); - // strip quotes - val = val.replace(/["'`]/g, ''); - } +module.exports = function isCore(x) { + return isCoreModule(x); +}; - segs = [val]; - escaped = true; - } - } - } else if (node.val === ',') { - if (options.expand) { - node.parent.queue.push(['']); - segs = ['']; - } else { - segs = ['|']; - } - } else { - escaped = true; - } +/***/ }), - if (escaped && isType(node.parent, 'brace')) { - if (node.parent.nodes.length <= 4 && node.parent.count === 1) { - node.parent.escaped = true; - } else if (node.parent.length <= 3) { - node.parent.escaped = true; - } - } +/***/ "../../node_modules/resolve/lib/node-modules-paths.js": +/***/ (function(module, exports, __webpack_require__) { - if (!hasQueue(node.parent)) { - node.parent.queue = segs; - return; - } +var path = __webpack_require__("path"); +var parse = path.parse || __webpack_require__("../../node_modules/path-parse/index.js"); // eslint-disable-line global-require - var last = utils.arrayify(queue.pop()); - if (node.parent.count > 1 && options.expand) { - last = multiply(last, node.parent.count); - node.parent.count = 1; - } +var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { + var prefix = '/'; + if ((/^([A-Za-z]:)/).test(absoluteStart)) { + prefix = ''; + } else if ((/^\\\\/).test(absoluteStart)) { + prefix = '\\\\'; + } - queue.push(utils.join(utils.flatten(last), segs.shift())); - queue.push.apply(queue, segs); - }) + var paths = [absoluteStart]; + var parsed = parse(absoluteStart); + while (parsed.dir !== paths[paths.length - 1]) { + paths.push(parsed.dir); + parsed = parse(parsed.dir); + } - /** - * Close - */ + return paths.reduce(function (dirs, aPath) { + return dirs.concat(modules.map(function (moduleDir) { + return path.resolve(prefix, aPath, moduleDir); + })); + }, []); +}; - .set('brace.close', function(node) { - var queue = node.parent.queue; - var prev = node.parent.parent; - var last = prev.queue.pop(); - var open = node.parent.open; - var close = node.val; +module.exports = function nodeModulesPaths(start, opts, request) { + var modules = opts && opts.moduleDirectory + ? [].concat(opts.moduleDirectory) + : ['node_modules']; - if (open && close && isOptimized(node, options)) { - open = '('; - close = ')'; - } + if (opts && typeof opts.paths === 'function') { + return opts.paths( + request, + start, + function () { return getNodeModulesDirs(start, modules); }, + opts + ); + } - // if a close brace exists, and the previous segment is one character - // don't wrap the result in braces or parens - var ele = utils.last(queue); - if (node.parent.count > 1 && options.expand) { - ele = multiply(queue.pop(), node.parent.count); - node.parent.count = 1; - queue.push(ele); - } + var dirs = getNodeModulesDirs(start, modules); + return opts && opts.paths ? dirs.concat(opts.paths) : dirs; +}; - if (close && typeof ele === 'string' && ele.length === 1) { - open = ''; - close = ''; - } - if ((isLiteralBrace(node, options) || noInner(node)) && !node.parent.hasEmpty) { - queue.push(utils.join(open, queue.pop() || '')); - queue = utils.flatten(utils.join(queue, close)); - } +/***/ }), - if (typeof last === 'undefined') { - prev.queue = [queue]; - } else { - prev.queue.push(utils.flatten(utils.join(last, queue))); - } - }) +/***/ "../../node_modules/resolve/lib/normalize-options.js": +/***/ (function(module, exports) { +module.exports = function (x, opts) { /** - * eos + * This file is purposefully a passthrough. It's expected that third-party + * environments will override it at runtime in order to inject special logic + * into `resolve` (by manipulating the options). One such example is the PnP + * code path in Yarn. */ - .set('eos', function(node) { - if (this.input) return; - - if (options.optimize !== false) { - this.output = utils.last(utils.flatten(this.ast.queue)); - } else if (Array.isArray(utils.last(this.ast.queue))) { - this.output = utils.flatten(this.ast.queue.pop()); - } else { - this.output = utils.flatten(this.ast.queue); - } - - if (node.parent.count > 1 && options.expand) { - this.output = multiply(this.output, node.parent.count); - } - - this.output = utils.arrayify(this.output); - this.ast.queue = []; - }); - + return opts || {}; }; -/** - * Multiply the segments in the current brace level - */ - -function multiply(queue, n, options) { - return utils.flatten(utils.repeat(utils.arrayify(queue), n)); -} - -/** - * Return true if `node` is escaped - */ - -function isEscaped(node) { - return node.escaped === true; -} - -/** - * Returns true if regex parens should be used for sets. If the parent `type` - * is not `brace`, then we're on a root node, which means we should never - * expand segments and open/close braces should be `{}` (since this indicates - * a brace is missing from the set) - */ - -function isOptimized(node, options) { - if (node.parent.isOptimized) return true; - return isType(node.parent, 'brace') - && !isEscaped(node.parent) - && options.expand !== true; -} - -/** - * Returns true if the value in `node` should be wrapped in a literal brace. - * @return {Boolean} - */ - -function isLiteralBrace(node, options) { - return isEscaped(node.parent) || options.optimize !== false; -} - -/** - * Returns true if the given `node` does not have an inner value. - * @return {Boolean} - */ - -function noInner(node, type) { - if (node.parent.queue.length === 1) { - return true; - } - var nodes = node.parent.nodes; - return nodes.length === 3 - && isType(nodes[0], 'brace.open') - && !isType(nodes[1], 'text') - && isType(nodes[2], 'brace.close'); -} - -/** - * Returns true if the given `node` is the given `type` - * @return {Boolean} - */ - -function isType(node, type) { - return typeof node !== 'undefined' && node.type === type; -} - -/** - * Returns true if the given `node` has a non-empty queue. - * @return {Boolean} - */ - -function hasQueue(node) { - return Array.isArray(node.queue) && node.queue.length; -} - /***/ }), -/***/ "../../node_modules/micromatch/node_modules/braces/lib/parsers.js": +/***/ "../../node_modules/resolve/lib/sync.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; +var isCore = __webpack_require__("../../node_modules/is-core-module/index.js"); +var fs = __webpack_require__("fs"); +var path = __webpack_require__("path"); +var getHomedir = __webpack_require__("../../node_modules/resolve/lib/homedir.js"); +var caller = __webpack_require__("../../node_modules/resolve/lib/caller.js"); +var nodeModulesPaths = __webpack_require__("../../node_modules/resolve/lib/node-modules-paths.js"); +var normalizeOptions = __webpack_require__("../../node_modules/resolve/lib/normalize-options.js"); +var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; -var Node = __webpack_require__("../../node_modules/snapdragon-node/index.js"); -var utils = __webpack_require__("../../node_modules/micromatch/node_modules/braces/lib/utils.js"); +var homedir = getHomedir(); +var defaultPaths = function () { + return [ + path.join(homedir, '.node_modules'), + path.join(homedir, '.node_libraries') + ]; +}; -/** - * Braces parsers - */ +var defaultIsFile = function isFile(file) { + try { + var stat = fs.statSync(file, { throwIfNoEntry: false }); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return !!stat && (stat.isFile() || stat.isFIFO()); +}; -module.exports = function(braces, options) { - braces.parser - .set('bos', function() { - if (!this.parsed) { - this.ast = this.nodes[0] = new Node(this.ast); - } - }) +var defaultIsDir = function isDirectory(dir) { + try { + var stat = fs.statSync(dir, { throwIfNoEntry: false }); + } catch (e) { + if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; + throw e; + } + return !!stat && stat.isDirectory(); +}; - /** - * Character parsers - */ +var defaultRealpathSync = function realpathSync(x) { + try { + return realpathFS(x); + } catch (realpathErr) { + if (realpathErr.code !== 'ENOENT') { + throw realpathErr; + } + } + return x; +}; - .set('escape', function() { - var pos = this.position(); - var m = this.match(/^(?:\\(.)|\$\{)/); - if (!m) return; +var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) { + if (opts && opts.preserveSymlinks === false) { + return realpathSync(x); + } + return x; +}; - var prev = this.prev(); - var last = utils.last(prev.nodes); +var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) { + var body = readFileSync(pkgfile); + try { + var pkg = JSON.parse(body); + return pkg; + } catch (jsonErr) {} +}; - var node = pos(new Node({ - type: 'text', - multiplier: 1, - val: m[0] - })); +var getPackageCandidates = function getPackageCandidates(x, start, opts) { + var dirs = nodeModulesPaths(start, opts, x); + for (var i = 0; i < dirs.length; i++) { + dirs[i] = path.join(dirs[i], x); + } + return dirs; +}; - if (node.val === '\\\\') { - return node; - } +module.exports = function resolveSync(x, options) { + if (typeof x !== 'string') { + throw new TypeError('Path must be a string.'); + } + var opts = normalizeOptions(x, options); - if (node.val === '${') { - var str = this.input; - var idx = -1; - var ch; + var isFile = opts.isFile || defaultIsFile; + var readFileSync = opts.readFileSync || fs.readFileSync; + var isDirectory = opts.isDirectory || defaultIsDir; + var realpathSync = opts.realpathSync || defaultRealpathSync; + var readPackageSync = opts.readPackageSync || defaultReadPackageSync; + if (opts.readFileSync && opts.readPackageSync) { + throw new TypeError('`readFileSync` and `readPackageSync` are mutually exclusive.'); + } + var packageIterator = opts.packageIterator; - while ((ch = str[++idx])) { - this.consume(1); - node.val += ch; - if (ch === '\\') { - node.val += str[++idx]; - continue; - } - if (ch === '}') { - break; - } - } - } + var extensions = opts.extensions || ['.js']; + var includeCoreModules = opts.includeCoreModules !== false; + var basedir = opts.basedir || path.dirname(caller()); + var parent = opts.filename || basedir; - if (this.options.unescape !== false) { - node.val = node.val.replace(/\\([{}])/g, '$1'); - } + opts.paths = opts.paths || defaultPaths(); - if (last.val === '"' && this.input.charAt(0) === '"') { - last.val = node.val; - this.consume(1); - return; - } + // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory + var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts); - return concatNodes.call(this, pos, node, prev, options); - }) + if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { + var res = path.resolve(absoluteStart, x); + if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; + var m = loadAsFileSync(res) || loadAsDirectorySync(res); + if (m) return maybeRealpathSync(realpathSync, m, opts); + } else if (includeCoreModules && isCore(x)) { + return x; + } else { + var n = loadNodeModulesSync(x, absoluteStart); + if (n) return maybeRealpathSync(realpathSync, n, opts); + } - /** - * Brackets: "[...]" (basic, this is overridden by - * other parsers in more advanced implementations) - */ + var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); + err.code = 'MODULE_NOT_FOUND'; + throw err; - .set('bracket', function() { - var isInside = this.isInside('brace'); - var pos = this.position(); - var m = this.match(/^(?:\[([!^]?)([^\]]{2,}|\]-)(\]|[^*+?]+)|\[)/); - if (!m) return; - - var prev = this.prev(); - var val = m[0]; - var negated = m[1] ? '^' : ''; - var inner = m[2] || ''; - var close = m[3] || ''; - - if (isInside && prev.type === 'brace') { - prev.text = prev.text || ''; - prev.text += val; - } + function loadAsFileSync(x) { + var pkg = loadpkg(path.dirname(x)); - var esc = this.input.slice(0, 2); - if (inner === '' && esc === '\\]') { - inner += esc; - this.consume(2); + if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) { + var rfile = path.relative(pkg.dir, x); + var r = opts.pathFilter(pkg.pkg, x, rfile); + if (r) { + x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign + } + } - var str = this.input; - var idx = -1; - var ch; + if (isFile(x)) { + return x; + } - while ((ch = str[++idx])) { - this.consume(1); - if (ch === ']') { - close = ch; - break; - } - inner += ch; + for (var i = 0; i < extensions.length; i++) { + var file = x + extensions[i]; + if (isFile(file)) { + return file; + } } - } + } - return pos(new Node({ - type: 'bracket', - val: val, - escaped: close !== ']', - negated: negated, - inner: inner, - close: close - })); - }) + function loadpkg(dir) { + if (dir === '' || dir === '/') return; + if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { + return; + } + if ((/[/\\]node_modules[/\\]*$/).test(dir)) return; - /** - * Empty braces (we capture these early to - * speed up processing in the compiler) - */ + var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json'); - .set('multiplier', function() { - var isInside = this.isInside('brace'); - var pos = this.position(); - var m = this.match(/^\{((?:,|\{,+\})+)\}/); - if (!m) return; + if (!isFile(pkgfile)) { + return loadpkg(path.dirname(dir)); + } - this.multiplier = true; - var prev = this.prev(); - var val = m[0]; + var pkg = readPackageSync(readFileSync, pkgfile); - if (isInside && prev.type === 'brace') { - prev.text = prev.text || ''; - prev.text += val; - } + if (pkg && opts.packageFilter) { + // v2 will pass pkgfile + pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment + } - var node = pos(new Node({ - type: 'text', - multiplier: 1, - match: m, - val: val - })); + return { pkg: pkg, dir: dir }; + } - return concatNodes.call(this, pos, node, prev, options); - }) + function loadAsDirectorySync(x) { + var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json'); + if (isFile(pkgfile)) { + try { + var pkg = readPackageSync(readFileSync, pkgfile); + } catch (e) {} - /** - * Open - */ + if (pkg && opts.packageFilter) { + // v2 will pass pkgfile + pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment + } - .set('brace.open', function() { - var pos = this.position(); - var m = this.match(/^\{(?!(?:[^\\}]?|,+)\})/); - if (!m) return; + if (pkg && pkg.main) { + if (typeof pkg.main !== 'string') { + var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); + mainError.code = 'INVALID_PACKAGE_MAIN'; + throw mainError; + } + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; + } + try { + var m = loadAsFileSync(path.resolve(x, pkg.main)); + if (m) return m; + var n = loadAsDirectorySync(path.resolve(x, pkg.main)); + if (n) return n; + } catch (e) {} + } + } - var prev = this.prev(); - var last = utils.last(prev.nodes); + return loadAsFileSync(path.join(x, '/index')); + } - // if the last parsed character was an extglob character - // we need to _not optimize_ the brace pattern because - // it might be mistaken for an extglob by a downstream parser - if (last && last.val && isExtglobChar(last.val.slice(-1))) { - last.optimize = false; - } + function loadNodeModulesSync(x, start) { + var thunk = function () { return getPackageCandidates(x, start, opts); }; + var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk(); - var open = pos(new Node({ - type: 'brace.open', - val: m[0] - })); + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + if (isDirectory(path.dirname(dir))) { + var m = loadAsFileSync(dir); + if (m) return m; + var n = loadAsDirectorySync(dir); + if (n) return n; + } + } + } +}; - var node = pos(new Node({ - type: 'brace', - nodes: [] - })); - node.push(open); - prev.push(node); - this.push('brace', node); - }) +/***/ }), - /** - * Close - */ +/***/ "../../node_modules/restore-cursor/index.js": +/***/ (function(module, exports, __webpack_require__) { - .set('brace.close', function() { - var pos = this.position(); - var m = this.match(/^\}/); - if (!m || !m[0]) return; +"use strict"; - var brace = this.pop('brace'); - var node = pos(new Node({ - type: 'brace.close', - val: m[0] - })); +const onetime = __webpack_require__("../../node_modules/onetime/index.js"); +const signalExit = __webpack_require__("../../node_modules/signal-exit/index.js"); - if (!this.isType(brace, 'brace')) { - if (this.options.strict) { - throw new Error('missing opening "{"'); - } - node.type = 'text'; - node.multiplier = 0; - node.escaped = true; - return node; - } +module.exports = onetime(() => { + signalExit(() => { + process.stderr.write('\u001B[?25h'); + }, {alwaysLast: true}); +}); - var prev = this.prev(); - var last = utils.last(prev.nodes); - if (last.text) { - var lastNode = utils.last(last.nodes); - if (lastNode.val === ')' && /[!@*?+]\(/.test(last.text)) { - var open = last.nodes[0]; - var text = last.nodes[1]; - if (open.type === 'brace.open' && text && text.type === 'text') { - text.optimize = false; - } - } - } - if (brace.nodes.length > 2) { - var first = brace.nodes[1]; - if (first.type === 'text' && first.val === ',') { - brace.nodes.splice(1, 1); - brace.nodes.push(first); - } - } +/***/ }), - brace.push(node); - }) +/***/ "../../node_modules/reusify/reusify.js": +/***/ (function(module, exports, __webpack_require__) { - /** - * Capture boundary characters - */ +"use strict"; - .set('boundary', function() { - var pos = this.position(); - var m = this.match(/^[$^](?!\{)/); - if (!m) return; - return pos(new Node({ - type: 'text', - val: m[0] - })); - }) - /** - * One or zero, non-comma characters wrapped in braces - */ +function reusify (Constructor) { + var head = new Constructor() + var tail = head - .set('nobrace', function() { - var isInside = this.isInside('brace'); - var pos = this.position(); - var m = this.match(/^\{[^,]?\}/); - if (!m) return; + function get () { + var current = head - var prev = this.prev(); - var val = m[0]; + if (current.next) { + head = current.next + } else { + head = new Constructor() + tail = head + } - if (isInside && prev.type === 'brace') { - prev.text = prev.text || ''; - prev.text += val; - } + current.next = null - return pos(new Node({ - type: 'text', - multiplier: 0, - val: val - })); - }) + return current + } - /** - * Text - */ + function release (obj) { + tail.next = obj + tail = obj + } - .set('text', function() { - var isInside = this.isInside('brace'); - var pos = this.position(); - var m = this.match(/^((?!\\)[^${}[\]])+/); - if (!m) return; + return { + get: get, + release: release + } +} - var prev = this.prev(); - var val = m[0]; +module.exports = reusify - if (isInside && prev.type === 'brace') { - prev.text = prev.text || ''; - prev.text += val; - } - var node = pos(new Node({ - type: 'text', - multiplier: 1, - val: val - })); +/***/ }), - return concatNodes.call(this, pos, node, prev, options); - }); -}; +/***/ "../../node_modules/rimraf/rimraf.js": +/***/ (function(module, exports, __webpack_require__) { -/** - * Returns true if the character is an extglob character. - */ +const assert = __webpack_require__("assert") +const path = __webpack_require__("path") +const fs = __webpack_require__("fs") +let glob = undefined +try { + glob = __webpack_require__("../../node_modules/glob/glob.js") +} catch (_err) { + // treat glob as optional. +} -function isExtglobChar(ch) { - return ch === '!' || ch === '@' || ch === '*' || ch === '?' || ch === '+'; +const defaultGlobOpts = { + nosort: true, + silent: true } -/** - * Combine text nodes, and calculate empty sets (`{,,}`) - * @param {Function} `pos` Function to calculate node position - * @param {Object} `node` AST node - * @return {Object} - */ +// for EMFILE handling +let timeout = 0 -function concatNodes(pos, node, parent, options) { - node.orig = node.val; - var prev = this.prev(); - var last = utils.last(prev.nodes); - var isEscaped = false; +const isWindows = (process.platform === "win32") - if (node.val.length > 1) { - var a = node.val.charAt(0); - var b = node.val.slice(-1); +const defaults = options => { + const methods = [ + 'unlink', + 'chmod', + 'stat', + 'lstat', + 'rmdir', + 'readdir' + ] + methods.forEach(m => { + options[m] = options[m] || fs[m] + m = m + 'Sync' + options[m] = options[m] || fs[m] + }) - isEscaped = (a === '"' && b === '"') - || (a === "'" && b === "'") - || (a === '`' && b === '`'); + options.maxBusyTries = options.maxBusyTries || 3 + options.emfileWait = options.emfileWait || 1000 + if (options.glob === false) { + options.disableGlob = true } - - if (isEscaped && options.unescape !== false) { - node.val = node.val.slice(1, node.val.length - 1); - node.escaped = true; + if (options.disableGlob !== true && glob === undefined) { + throw Error('glob dependency not found, set `options.disableGlob = true` if intentional') } + options.disableGlob = options.disableGlob || false + options.glob = options.glob || defaultGlobOpts +} - if (node.match) { - var match = node.match[1]; - if (!match || match.indexOf('}') === -1) { - match = node.match[0]; - } - - // replace each set with a single "," - var val = match.replace(/\{/g, ',').replace(/\}/g, ''); - node.multiplier *= val.length; - node.val = ''; +const rimraf = (p, options, cb) => { + if (typeof options === 'function') { + cb = options + options = {} } - var simpleText = last.type === 'text' - && last.multiplier === 1 - && node.multiplier === 1 - && node.val; + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert.equal(typeof cb, 'function', 'rimraf: callback function required') + assert(options, 'rimraf: invalid options argument provided') + assert.equal(typeof options, 'object', 'rimraf: options should be object') - if (simpleText) { - last.val += node.val; - return; - } + defaults(options) - prev.push(node); -} + let busyTries = 0 + let errState = null + let n = 0 + const next = (er) => { + errState = errState || er + if (--n === 0) + cb(errState) + } -/***/ }), + const afterGlob = (er, results) => { + if (er) + return cb(er) -/***/ "../../node_modules/micromatch/node_modules/braces/lib/utils.js": -/***/ (function(module, exports, __webpack_require__) { + n = results.length + if (n === 0) + return cb() -"use strict"; + results.forEach(p => { + const CB = (er) => { + if (er) { + if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && + busyTries < options.maxBusyTries) { + busyTries ++ + // try again, with the same exact callback as this one. + return setTimeout(() => rimraf_(p, options, CB), busyTries * 100) + } + // this one won't happen if graceful-fs is used. + if (er.code === "EMFILE" && timeout < options.emfileWait) { + return setTimeout(() => rimraf_(p, options, CB), timeout ++) + } -var splitString = __webpack_require__("../../node_modules/split-string/index.js"); -var utils = module.exports; + // already gone + if (er.code === "ENOENT") er = null + } -/** - * Module dependencies - */ + timeout = 0 + next(er) + } + rimraf_(p, options, CB) + }) + } -utils.extend = __webpack_require__("../../node_modules/micromatch/node_modules/braces/node_modules/extend-shallow/index.js"); -utils.flatten = __webpack_require__("../../node_modules/arr-flatten/index.js"); -utils.isObject = __webpack_require__("../../node_modules/isobject/index.js"); -utils.fillRange = __webpack_require__("../../node_modules/micromatch/node_modules/fill-range/index.js"); -utils.repeat = __webpack_require__("../../node_modules/repeat-element/index.js"); -utils.unique = __webpack_require__("../../node_modules/array-unique/index.js"); + if (options.disableGlob || !glob.hasMagic(p)) + return afterGlob(null, [p]) -utils.define = function(obj, key, val) { - Object.defineProperty(obj, key, { - writable: true, - configurable: true, - enumerable: false, - value: val - }); -}; + options.lstat(p, (er, stat) => { + if (!er) + return afterGlob(null, [p]) -/** - * Returns true if the given string contains only empty brace sets. - */ + glob(p, options.glob, afterGlob) + }) -utils.isEmptySets = function(str) { - return /^(?:\{,\})+$/.test(str); -}; +} -/** - * Returns true if the given string contains only empty brace sets. - */ +// Two possible strategies. +// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR +// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR +// +// Both result in an extra syscall when you guess wrong. However, there +// are likely far more normal files in the world than directories. This +// is based on the assumption that a the average number of files per +// directory is >= 1. +// +// If anyone ever complains about this, then I guess the strategy could +// be made configurable somehow. But until then, YAGNI. +const rimraf_ = (p, options, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') -utils.isQuotedString = function(str) { - var open = str.charAt(0); - if (open === '\'' || open === '"' || open === '`') { - return str.slice(-1) === open; - } - return false; -}; + // sunos lets the root user unlink directories, which is... weird. + // so we have to lstat here and make sure it's not a dir. + options.lstat(p, (er, st) => { + if (er && er.code === "ENOENT") + return cb(null) -/** - * Create the key to use for memoization. The unique key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. - */ + // Windows can EPERM on stat. Life is suffering. + if (er && er.code === "EPERM" && isWindows) + fixWinEPERM(p, options, er, cb) -utils.createKey = function(pattern, options) { - var id = pattern; - if (typeof options === 'undefined') { - return id; - } - var keys = Object.keys(options); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - id += ';' + key + '=' + String(options[key]); - } - return id; -}; + if (st && st.isDirectory()) + return rmdir(p, options, er, cb) -/** - * Normalize options - */ + options.unlink(p, er => { + if (er) { + if (er.code === "ENOENT") + return cb(null) + if (er.code === "EPERM") + return (isWindows) + ? fixWinEPERM(p, options, er, cb) + : rmdir(p, options, er, cb) + if (er.code === "EISDIR") + return rmdir(p, options, er, cb) + } + return cb(er) + }) + }) +} -utils.createOptions = function(options) { - var opts = utils.extend.apply(null, arguments); - if (typeof opts.expand === 'boolean') { - opts.optimize = !opts.expand; - } - if (typeof opts.optimize === 'boolean') { - opts.expand = !opts.optimize; +const fixWinEPERM = (p, options, er, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.chmod(p, 0o666, er2 => { + if (er2) + cb(er2.code === "ENOENT" ? null : er) + else + options.stat(p, (er3, stats) => { + if (er3) + cb(er3.code === "ENOENT" ? null : er) + else if (stats.isDirectory()) + rmdir(p, options, er, cb) + else + options.unlink(p, cb) + }) + }) +} + +const fixWinEPERMSync = (p, options, er) => { + assert(p) + assert(options) + + try { + options.chmodSync(p, 0o666) + } catch (er2) { + if (er2.code === "ENOENT") + return + else + throw er } - if (opts.optimize === true) { - opts.makeRe = true; + + let stats + try { + stats = options.statSync(p) + } catch (er3) { + if (er3.code === "ENOENT") + return + else + throw er } - return opts; -}; -/** - * Join patterns in `a` to patterns in `b` - */ + if (stats.isDirectory()) + rmdirSync(p, options, er) + else + options.unlinkSync(p) +} -utils.join = function(a, b, options) { - options = options || {}; - a = utils.arrayify(a); - b = utils.arrayify(b); +const rmdir = (p, options, originalEr, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') - if (!a.length) return b; - if (!b.length) return a; + // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) + // if we guessed wrong, and it's not a directory, then + // raise the original error. + options.rmdir(p, er => { + if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) + rmkids(p, options, cb) + else if (er && er.code === "ENOTDIR") + cb(originalEr) + else + cb(er) + }) +} - var len = a.length; - var idx = -1; - var arr = []; +const rmkids = (p, options, cb) => { + assert(p) + assert(options) + assert(typeof cb === 'function') - while (++idx < len) { - var val = a[idx]; - if (Array.isArray(val)) { - for (var i = 0; i < val.length; i++) { - val[i] = utils.join(val[i], b, options); - } - arr.push(val); - continue; - } + options.readdir(p, (er, files) => { + if (er) + return cb(er) + let n = files.length + if (n === 0) + return options.rmdir(p, cb) + let errState + files.forEach(f => { + rimraf(path.join(p, f), options, er => { + if (errState) + return + if (er) + return cb(errState = er) + if (--n === 0) + options.rmdir(p, cb) + }) + }) + }) +} - for (var j = 0; j < b.length; j++) { - var bval = b[j]; +// this looks simpler, and is strictly *faster*, but will +// tie up the JavaScript thread and fail on excessively +// deep directory trees. +const rimrafSync = (p, options) => { + options = options || {} + defaults(options) - if (Array.isArray(bval)) { - arr.push(utils.join(val, bval, options)); - } else { - arr.push(val + bval); - } + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + let results + + if (options.disableGlob || !glob.hasMagic(p)) { + results = [p] + } else { + try { + options.lstatSync(p) + results = [p] + } catch (er) { + results = glob.sync(p, options.glob) } } - return arr; -}; -/** - * Split the given string on `,` if not escaped. - */ + if (!results.length) + return -utils.split = function(str, options) { - var opts = utils.extend({sep: ','}, options); - if (typeof opts.keepQuotes !== 'boolean') { - opts.keepQuotes = true; - } - if (opts.unescape === false) { - opts.keepEscaping = true; - } - return splitString(str, opts, utils.escapeBrackets(opts)); -}; + for (let i = 0; i < results.length; i++) { + const p = results[i] -/** - * Expand ranges or sets in the given `pattern`. - * - * @param {String} `str` - * @param {Object} `options` - * @return {Object} - */ + let st + try { + st = options.lstatSync(p) + } catch (er) { + if (er.code === "ENOENT") + return -utils.expand = function(str, options) { - var opts = utils.extend({rangeLimit: 10000}, options); - var segs = utils.split(str, opts); - var tok = { segs: segs }; + // Windows can EPERM on stat. Life is suffering. + if (er.code === "EPERM" && isWindows) + fixWinEPERMSync(p, options, er) + } - if (utils.isQuotedString(str)) { - return tok; - } + try { + // sunos lets the root user unlink directories, which is... weird. + if (st && st.isDirectory()) + rmdirSync(p, options, null) + else + options.unlinkSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "EPERM") + return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) + if (er.code !== "EISDIR") + throw er - if (opts.rangeLimit === true) { - opts.rangeLimit = 10000; + rmdirSync(p, options, er) + } } +} - if (segs.length > 1) { - if (opts.optimize === false) { - tok.val = segs[0]; - return tok; - } +const rmdirSync = (p, options, originalEr) => { + assert(p) + assert(options) - tok.segs = utils.stringifyArray(tok.segs); - } else if (segs.length === 1) { - var arr = str.split('..'); + try { + options.rmdirSync(p) + } catch (er) { + if (er.code === "ENOENT") + return + if (er.code === "ENOTDIR") + throw originalEr + if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") + rmkidsSync(p, options) + } +} - if (arr.length === 1) { - tok.val = tok.segs[tok.segs.length - 1] || tok.val || str; - tok.segs = []; - return tok; - } +const rmkidsSync = (p, options) => { + assert(p) + assert(options) + options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) - if (arr.length === 2 && arr[0] === arr[1]) { - tok.escaped = true; - tok.val = arr[0]; - tok.segs = []; - return tok; + // We only end up here once we got ENOTEMPTY at least once, and + // at this point, we are guaranteed to have removed all the kids. + // So, we know that it won't be ENOENT or ENOTDIR or anything else. + // try really hard to delete stuff on windows, because it has a + // PROFOUNDLY annoying habit of not closing handles promptly when + // files are deleted, resulting in spurious ENOTEMPTY errors. + const retries = isWindows ? 100 : 1 + let i = 0 + do { + let threw = true + try { + const ret = options.rmdirSync(p, options) + threw = false + return ret + } finally { + if (++i < retries && threw) + continue } + } while (true) +} - if (arr.length > 1) { - if (opts.optimize !== false) { - opts.optimize = true; - delete opts.expand; - } +module.exports = rimraf +rimraf.sync = rimrafSync - if (opts.optimize !== true) { - var min = Math.min(arr[0], arr[1]); - var max = Math.max(arr[0], arr[1]); - var step = arr[2] || 1; - if (opts.rangeLimit !== false && ((max - min) / step >= opts.rangeLimit)) { - throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.'); - } - } +/***/ }), - arr.push(opts); - tok.segs = utils.fillRange.apply(null, arr); +/***/ "../../node_modules/run-parallel/index.js": +/***/ (function(module, exports) { - if (!tok.segs.length) { - tok.escaped = true; - tok.val = str; - return tok; - } +module.exports = runParallel - if (opts.optimize === true) { - tok.segs = utils.stringifyArray(tok.segs); - } +function runParallel (tasks, cb) { + var results, pending, keys + var isSync = true - if (tok.segs === '') { - tok.val = str; - } else { - tok.val = tok.segs[0]; - } - return tok; - } + if (Array.isArray(tasks)) { + results = [] + pending = tasks.length } else { - tok.val = str; + keys = Object.keys(tasks) + results = {} + pending = keys.length } - return tok; -}; -/** - * Ensure commas inside brackets and parens are not split. - * @param {Object} `tok` Token from the `split-string` module - * @return {undefined} - */ + function done (err) { + function end () { + if (cb) cb(err, results) + cb = null + } + if (isSync) process.nextTick(end) + else end() + } -utils.escapeBrackets = function(options) { - return function(tok) { - if (tok.escaped && tok.val === 'b') { - tok.val = '\\b'; - return; + function each (i, err, result) { + results[i] = result + if (--pending === 0 || err) { + done(err) } + } - if (tok.val !== '(' && tok.val !== '[') return; - var opts = utils.extend({}, options); - var brackets = []; - var parens = []; - var stack = []; - var val = tok.val; - var str = tok.str; - var i = tok.idx - 1; + if (!pending) { + // empty + done(null) + } else if (keys) { + // object + keys.forEach(function (key) { + tasks[key](function (err, result) { each(key, err, result) }) + }) + } else { + // array + tasks.forEach(function (task, i) { + task(function (err, result) { each(i, err, result) }) + }) + } - while (++i < str.length) { - var ch = str[i]; + isSync = false +} - if (ch === '\\') { - val += (opts.keepEscaping === false ? '' : ch) + str[++i]; - continue; - } - if (ch === '(') { - parens.push(ch); - stack.push(ch); - } +/***/ }), - if (ch === '[') { - brackets.push(ch); - stack.push(ch); - } +/***/ "../../node_modules/rxjs/dist/esm5/index.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (ch === ')') { - parens.pop(); - stack.pop(); - if (!stack.length) { - val += ch; - break; - } - } +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return _internal_Observable__WEBPACK_IMPORTED_MODULE_0__["a"]; }); - if (ch === ']') { - brackets.pop(); - stack.pop(); - if (!stack.length) { - val += ch; - break; - } - } - val += ch; - } +/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["a"]; }); - tok.split = false; - tok.val = val.slice(1); - tok.idx = i; - }; -}; +/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_2__["a"]; }); -/** - * Returns true if the given string looks like a regex quantifier - * @return {Boolean} - */ +/* harmony import */ var _internal_observable_dom_animationFrames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrames", function() { return _internal_observable_dom_animationFrames__WEBPACK_IMPORTED_MODULE_3__["a"]; }); -utils.isQuantifier = function(str) { - return /^(?:[0-9]?,[0-9]|[0-9],)$/.test(str); -}; +/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _internal_Subject__WEBPACK_IMPORTED_MODULE_4__["a"]; }); -/** - * Cast `val` to an array. - * @param {*} `val` - */ +/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__["a"]; }); -utils.stringifyArray = function(arr) { - return [utils.arrayify(arr).join('|')]; -}; +/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__["a"]; }); -/** - * Cast `val` to an array. - * @param {*} `val` - */ +/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__["a"]; }); -utils.arrayify = function(arr) { - if (typeof arr === 'undefined') { - return []; - } - if (typeof arr === 'string') { - return [arr]; - } - return arr; -}; +/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/asap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["a"]; }); -/** - * Returns true if the given `str` is a non-empty string - * @return {Boolean} - */ +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["b"]; }); -utils.isString = function(str) { - return str != null && typeof str === 'string'; -}; +/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "async", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["a"]; }); -/** - * Get the last element from `array` - * @param {Array} `array` - * @return {*} - */ +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["b"]; }); -utils.last = function(arr, n) { - return arr[arr.length - (n || 1)]; -}; +/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/queue.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["a"]; }); -utils.escapeRegex = function(str) { - return str.replace(/\\?([!^*?()[\]{}+?/])/g, '\\$1'); -}; +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["b"]; }); +/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["a"]; }); -/***/ }), +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["b"]; }); -/***/ "../../node_modules/micromatch/node_modules/braces/node_modules/extend-shallow/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["b"]; }); -"use strict"; +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["a"]; }); +/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Scheduler.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__["a"]; }); -var isObject = __webpack_require__("../../node_modules/micromatch/node_modules/braces/node_modules/is-extendable/index.js"); +/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__["b"]; }); -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } +/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__["b"]; }); - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; +/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Notification.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["a"]; }); - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["b"]; }); -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} +/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/pipe.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__["a"]; }); -/** - * Returns true if the given `key` is an own property of `obj`. - */ +/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__["a"]; }); -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} +/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__["a"]; }); +/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isObservable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__["a"]; }); -/***/ }), +/* harmony import */ var _internal_lastValueFrom__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/lastValueFrom.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lastValueFrom", function() { return _internal_lastValueFrom__WEBPACK_IMPORTED_MODULE_21__["a"]; }); -/***/ "../../node_modules/micromatch/node_modules/braces/node_modules/is-extendable/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_firstValueFrom__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "firstValueFrom", function() { return _internal_firstValueFrom__WEBPACK_IMPORTED_MODULE_22__["a"]; }); -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ +/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_23__["a"]; }); +/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_24__["a"]; }); +/* harmony import */ var _internal_util_NotFoundError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotFoundError", function() { return _internal_util_NotFoundError__WEBPACK_IMPORTED_MODULE_25__["a"]; }); -module.exports = function isExtendable(val) { - return typeof val !== 'undefined' && val !== null - && (typeof val === 'object' || typeof val === 'function'); -}; +/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_26__["a"]; }); +/* harmony import */ var _internal_util_SequenceError__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SequenceError", function() { return _internal_util_SequenceError__WEBPACK_IMPORTED_MODULE_27__["a"]; }); -/***/ }), +/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__["a"]; }); -/***/ "../../node_modules/micromatch/node_modules/define-property/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_29__["a"]; }); -"use strict"; -/*! - * define-property - * - * Copyright (c) 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ +/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/bindCallback.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_30__["a"]; }); +/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/bindNodeCallback.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_31__["a"]; }); +/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_32__["a"]; }); -var isobject = __webpack_require__("../../node_modules/isobject/index.js"); -var isDescriptor = __webpack_require__("../../node_modules/is-descriptor/index.js"); -var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) - ? Reflect.defineProperty - : Object.defineProperty; +/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/concat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_33__["a"]; }); -module.exports = function defineProperty(obj, key, val) { - if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) { - throw new TypeError('expected an object, function, or array'); - } +/* harmony import */ var _internal_observable_connectable__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/connectable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connectable", function() { return _internal_observable_connectable__WEBPACK_IMPORTED_MODULE_34__["a"]; }); - if (typeof key !== 'string') { - throw new TypeError('expected "key" to be a string'); - } +/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/defer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_35__["a"]; }); - if (isDescriptor(val)) { - define(obj, key, val); - return obj; - } +/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__["b"]; }); - define(obj, key, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); +/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_37__["a"]; }); - return obj; -}; +/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "from", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_38__["a"]; }); +/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_39__["a"]; }); -/***/ }), +/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_40__["a"]; }); -/***/ "../../node_modules/micromatch/node_modules/extend-shallow/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/generate.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_41__["a"]; }); -"use strict"; +/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/iif.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_42__["a"]; }); +/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/interval.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_43__["a"]; }); -var isExtendable = __webpack_require__("../../node_modules/micromatch/node_modules/is-extendable/index.js"); -var assignSymbols = __webpack_require__("../../node_modules/assign-symbols/index.js"); +/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/merge.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_44__["a"]; }); -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; +/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/never.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "never", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__["b"]; }); -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} +/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/of.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_46__["a"]; }); -function isString(val) { - return (val && typeof val === 'string'); -} +/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/onErrorResumeNext.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_47__["a"]; }); -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} +/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/pairs.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_48__["a"]; }); -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} +/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/partition.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_observable_partition__WEBPACK_IMPORTED_MODULE_49__["a"]; }); -/** - * Returns true if the given `key` is an own property of `obj`. - */ +/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/race.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_50__["a"]; }); -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} +/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/range.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_51__["a"]; }); -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} +/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/throwError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_52__["a"]; }); +/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_53__["a"]; }); -/***/ }), +/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/using.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_54__["a"]; }); -/***/ "../../node_modules/micromatch/node_modules/fill-range/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/zip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_55__["a"]; }); -"use strict"; -/*! - * fill-range - * - * Copyright (c) 2014-2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ +/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_56__["a"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__["a"]; }); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__["a"]; }); -var util = __webpack_require__("util"); -var isNumber = __webpack_require__("../../node_modules/is-number/index.js"); -var extend = __webpack_require__("../../node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow/index.js"); -var repeat = __webpack_require__("../../node_modules/repeat-string/index.js"); -var toRegex = __webpack_require__("../../node_modules/micromatch/node_modules/to-regex-range/index.js"); +/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_57__["a"]; }); -/** - * Return a range of numbers or letters. - * - * @param {String} `start` Start of the range - * @param {String} `stop` End of the range - * @param {String} `step` Increment or decrement to use. - * @param {Function} `fn` Custom function to modify each element in the range. - * @return {Array} - */ +/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/audit.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_58__["a"]; }); -function fillRange(start, stop, step, options) { - if (typeof start === 'undefined') { - return []; - } +/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/auditTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_59__["a"]; }); - if (typeof stop === 'undefined' || start === stop) { - // special case, for handling negative zero - var isString = typeof start === 'string'; - if (isNumber(start) && !toNumber(start)) { - return [isString ? '0' : 0]; - } - return [start]; - } +/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_60__["a"]; }); - if (typeof step !== 'number' && typeof step !== 'string') { - options = step; - step = undefined; - } +/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_61__["a"]; }); - if (typeof options === 'function') { - options = { transform: options }; - } +/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_62__["a"]; }); - var opts = extend({step: step}, options); - if (opts.step && !isValidNumber(opts.step)) { - if (opts.strictRanges === true) { - throw new TypeError('expected options.step to be a number'); - } - return []; - } +/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_63__["a"]; }); - opts.isNumber = isValidNumber(start) && isValidNumber(stop); - if (!opts.isNumber && !isValid(start, stop)) { - if (opts.strictRanges === true) { - throw new RangeError('invalid range arguments: ' + util.inspect([start, stop])); - } - return []; - } +/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_64__["a"]; }); - opts.isPadded = isPadded(start) || isPadded(stop); - opts.toString = opts.stringify - || typeof opts.step === 'string' - || typeof start === 'string' - || typeof stop === 'string' - || !opts.isNumber; +/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_65__["a"]; }); - if (opts.isPadded) { - opts.maxLength = Math.max(String(start).length, String(stop).length); - } +/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_66__["a"]; }); - // support legacy minimatch/fill-range options - if (typeof opts.optimize === 'boolean') opts.toRegex = opts.optimize; - if (typeof opts.makeRe === 'boolean') opts.toRegex = opts.makeRe; - return expand(start, stop, opts); -} +/* harmony import */ var _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestAll", function() { return _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_67__["a"]; }); -function expand(start, stop, options) { - var a = options.isNumber ? toNumber(start) : start.charCodeAt(0); - var b = options.isNumber ? toNumber(stop) : stop.charCodeAt(0); +/* harmony import */ var _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestWith", function() { return _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_68__["a"]; }); - var step = Math.abs(toNumber(options.step)) || 1; - if (options.toRegex && step === 1) { - return toRange(a, b, start, stop, options); - } +/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_69__["a"]; }); - var zero = {greater: [], lesser: []}; - var asc = a < b; - var arr = new Array(Math.round((asc ? b - a : a - b) / step)); - var idx = 0; +/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_70__["a"]; }); - while (asc ? a <= b : a >= b) { - var val = options.isNumber ? a : String.fromCharCode(a); - if (options.toRegex && (val >= 0 || !options.isNumber)) { - zero.greater.push(val); - } else { - zero.lesser.push(Math.abs(val)); - } +/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_71__["a"]; }); - if (options.isPadded) { - val = zeros(val, options); - } +/* harmony import */ var _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatWith", function() { return _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_72__["a"]; }); - if (options.toString) { - val = String(val); - } +/* harmony import */ var _internal_operators_connect__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/connect.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return _internal_operators_connect__WEBPACK_IMPORTED_MODULE_73__["a"]; }); - if (typeof options.transform === 'function') { - arr[idx++] = options.transform(val, a, b, step, idx, arr, options); - } else { - arr[idx++] = val; - } +/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/count.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_74__["a"]; }); - if (asc) { - a += step; - } else { - a -= step; - } - } +/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/debounce.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_75__["a"]; }); - if (options.toRegex === true) { - return toSequence(arr, zero, options); - } - return arr; -} +/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_76__["a"]; }); -function toRange(a, b, start, stop, options) { - if (options.isPadded) { - return toRegex(start, stop, options); - } +/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_77__["a"]; }); - if (options.isNumber) { - return toRegex(Math.min(a, b), Math.max(a, b), options); - } +/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_78__["a"]; }); - var start = String.fromCharCode(Math.min(a, b)); - var stop = String.fromCharCode(Math.max(a, b)); - return '[' + start + '-' + stop + ']'; -} +/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_79__["a"]; }); -function toSequence(arr, zeros, options) { - var greater = '', lesser = ''; - if (zeros.greater.length) { - greater = zeros.greater.join('|'); - } - if (zeros.lesser.length) { - lesser = '-(' + zeros.lesser.join('|') + ')'; - } - var res = greater && lesser - ? greater + '|' + lesser - : greater || lesser; +/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_80__["a"]; }); - if (options.capture) { - return '(' + res + ')'; - } - return res; -} +/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinct.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_81__["a"]; }); -function zeros(val, options) { - if (options.isPadded) { - var str = String(val); - var len = str.length; - var dash = ''; - if (str.charAt(0) === '-') { - dash = '-'; - str = str.slice(1); - } - var diff = options.maxLength - len; - var pad = repeat('0', diff); - val = (dash + pad + str); - } - if (options.stringify) { - return String(val); - } - return val; -} +/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_82__["a"]; }); -function toNumber(val) { - return Number(val) || 0; -} +/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_83__["a"]; }); -function isPadded(str) { - return /^-?0\d/.test(str); -} +/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/elementAt.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_84__["a"]; }); -function isValid(min, max) { - return (isValidNumber(min) || isValidLetter(min)) - && (isValidNumber(max) || isValidLetter(max)); -} +/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/endWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_85__["a"]; }); -function isValidLetter(ch) { - return typeof ch === 'string' && ch.length === 1 && /^\w+$/.test(ch); -} +/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/every.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_86__["a"]; }); -function isValidNumber(n) { - return isNumber(n) && !/\./.test(n); -} +/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaust.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_87__["a"]; }); -/** - * Expose `fillRange` - * @type {Function} - */ +/* harmony import */ var _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustAll", function() { return _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_88__["a"]; }); -module.exports = fillRange; +/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_89__["a"]; }); +/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/expand.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_90__["a"]; }); -/***/ }), +/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_91__["a"]; }); -/***/ "../../node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/finalize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_92__["a"]; }); -"use strict"; +/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/find.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_93__["b"]; }); +/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/findIndex.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_94__["a"]; }); -var isObject = __webpack_require__("../../node_modules/micromatch/node_modules/fill-range/node_modules/is-extendable/index.js"); +/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/first.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_95__["a"]; }); -module.exports = function extend(o/*, objects*/) { - if (!isObject(o)) { o = {}; } +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/groupBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_96__["a"]; }); - var len = arguments.length; - for (var i = 1; i < len; i++) { - var obj = arguments[i]; +/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_97__["a"]; }); - if (isObject(obj)) { - assign(o, obj); - } - } - return o; -}; +/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_98__["a"]; }); -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} +/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/last.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_99__["a"]; }); -/** - * Returns true if the given `key` is an own property of `obj`. - */ +/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_100__["a"]; }); -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} +/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_101__["a"]; }); +/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/materialize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_102__["a"]; }); -/***/ }), +/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/max.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_103__["a"]; }); -/***/ "../../node_modules/micromatch/node_modules/fill-range/node_modules/is-extendable/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_104__["a"]; }); -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ +/* harmony import */ var _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/flatMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_105__["a"]; }); +/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_106__["a"]; }); +/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_107__["a"]; }); -module.exports = function isExtendable(val) { - return typeof val !== 'undefined' && val !== null - && (typeof val === 'object' || typeof val === 'function'); -}; +/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_108__["a"]; }); +/* harmony import */ var _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_109__["a"]; }); -/***/ }), +/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/min.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_110__["a"]; }); -/***/ "../../node_modules/micromatch/node_modules/is-extendable/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_111__["a"]; }); -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ +/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_112__["a"]; }); +/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_113__["a"]; }); +/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/pluck.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_114__["a"]; }); -var isPlainObject = __webpack_require__("../../node_modules/is-plain-object/index.js"); +/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publish.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_115__["a"]; }); -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; +/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_116__["a"]; }); +/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_117__["a"]; }); -/***/ }), +/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_118__["a"]; }); -/***/ "../../node_modules/micromatch/node_modules/to-regex-range/index.js": -/***/ (function(module, exports, __webpack_require__) { +/* harmony import */ var _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/raceWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "raceWith", function() { return _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_119__["a"]; }); -"use strict"; -/*! - * to-regex-range - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ +/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_120__["a"]; }); +/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/repeat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_121__["a"]; }); +/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_122__["a"]; }); -var repeat = __webpack_require__("../../node_modules/repeat-string/index.js"); -var isNumber = __webpack_require__("../../node_modules/is-number/index.js"); -var cache = {}; +/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/retry.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_123__["a"]; }); -function toRegexRange(min, max, options) { - if (isNumber(min) === false) { - throw new RangeError('toRegexRange: first argument is invalid.'); - } +/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_124__["a"]; }); - if (typeof max === 'undefined' || min === max) { - return String(min); - } +/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_125__["a"]; }); - if (isNumber(max) === false) { - throw new RangeError('toRegexRange: second argument is invalid.'); - } +/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sample.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_126__["a"]; }); - options = options || {}; - var relax = String(options.relaxZeros); - var shorthand = String(options.shorthand); - var capture = String(options.capture); - var key = min + ':' + max + '=' + relax + shorthand + capture; - if (cache.hasOwnProperty(key)) { - return cache[key].result; - } +/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_127__["a"]; }); - var a = Math.min(min, max); - var b = Math.max(min, max); +/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/scan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_128__["a"]; }); - if (Math.abs(a - b) === 1) { - var result = min + '|' + max; - if (options.capture) { - return '(' + result + ')'; - } - return result; - } +/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_129__["a"]; }); - var isPadded = padding(min) || padding(max); - var positives = []; - var negatives = []; +/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/share.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_130__["a"]; }); - var tok = {min: min, max: max, a: a, b: b}; - if (isPadded) { - tok.isPadded = isPadded; - tok.maxLen = String(tok.max).length; - } +/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_131__["a"]; }); - if (a < 0) { - var newMin = b < 0 ? Math.abs(b) : 1; - var newMax = Math.abs(a); - negatives = splitToPatterns(newMin, newMax, tok, options); - a = tok.a = 0; - } +/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/single.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_132__["a"]; }); - if (b >= 0) { - positives = splitToPatterns(a, b, tok, options); - } +/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_133__["a"]; }); - tok.negatives = negatives; - tok.positives = positives; - tok.result = siftPatterns(negatives, positives, options); +/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_134__["a"]; }); - if (options.capture && (positives.length + negatives.length) > 1) { - tok.result = '(' + tok.result + ')'; - } +/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_135__["a"]; }); - cache[key] = tok; - return tok.result; -} +/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_136__["a"]; }); -function siftPatterns(neg, pos, options) { - var onlyNegative = filterPatterns(neg, pos, '-', false, options) || []; - var onlyPositive = filterPatterns(pos, neg, '', false, options) || []; - var intersected = filterPatterns(neg, pos, '-?', true, options) || []; - var subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); - return subpatterns.join('|'); -} +/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/startWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_137__["a"]; }); -function splitToRanges(min, max) { - min = Number(min); - max = Number(max); +/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_138__["a"]; }); - var nines = 1; - var stops = [max]; - var stop = +countNines(min, nines); +/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_139__["a"]; }); - while (min <= stop && stop <= max) { - stops = push(stops, stop); - nines += 1; - stop = +countNines(min, nines); - } +/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_140__["a"]; }); - var zeros = 1; - stop = countZeros(max + 1, zeros) - 1; +/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_141__["a"]; }); - while (min < stop && stop <= max) { - stops = push(stops, stop); - zeros += 1; - stop = countZeros(max + 1, zeros) - 1; - } +/* harmony import */ var _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchScan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchScan", function() { return _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_142__["a"]; }); - stops.sort(compare); - return stops; -} +/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_143__["a"]; }); -/** - * Convert a range to a regex pattern - * @param {Number} `start` - * @param {Number} `stop` - * @return {String} - */ +/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_144__["a"]; }); -function rangeToPattern(start, stop, options) { - if (start === stop) { - return {pattern: String(start), digits: []}; - } +/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_145__["a"]; }); - var zipped = zip(String(start), String(stop)); - var len = zipped.length, i = -1; +/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_146__["a"]; }); - var pattern = ''; - var digits = 0; +/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/tap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_147__["a"]; }); - while (++i < len) { - var numbers = zipped[i]; - var startDigit = numbers[0]; - var stopDigit = numbers[1]; +/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_148__["b"]; }); - if (startDigit === stopDigit) { - pattern += startDigit; +/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_149__["a"]; }); - } else if (startDigit !== '0' || stopDigit !== '9') { - pattern += toCharacterClass(startDigit, stopDigit); +/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_150__["a"]; }); - } else { - digits += 1; - } - } +/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_151__["a"]; }); - if (digits) { - pattern += options.shorthand ? '\\d' : '[0-9]'; - } +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__["b"]; }); - return { pattern: pattern, digits: [digits] }; -} +/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_152__["a"]; }); -function splitToPatterns(min, max, tok, options) { - var ranges = splitToRanges(min, max); - var len = ranges.length; - var idx = -1; +/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timestamp.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_153__["a"]; }); - var tokens = []; - var start = min; - var prev; +/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/toArray.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_154__["a"]; }); - while (++idx < len) { - var range = ranges[idx]; - var obj = rangeToPattern(start, range, options); - var zeros = ''; +/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/window.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_155__["a"]; }); - if (!tok.isPadded && prev && prev.pattern === obj.pattern) { - if (prev.digits.length > 1) { - prev.digits.pop(); - } - prev.digits.push(obj.digits[0]); - prev.string = prev.pattern + toQuantifier(prev.digits); - start = range + 1; - continue; - } +/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_156__["a"]; }); - if (tok.isPadded) { - zeros = padZeros(range, tok); - } +/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_157__["a"]; }); - obj.string = zeros + obj.pattern + toQuantifier(obj.digits); - tokens.push(obj); - start = range + 1; - prev = obj; - } +/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_158__["a"]; }); - return tokens; -} +/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_159__["a"]; }); -function filterPatterns(arr, comparison, prefix, intersection, options) { - var res = []; +/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_160__["a"]; }); - for (var i = 0; i < arr.length; i++) { - var tok = arr[i]; - var ele = tok.string; +/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zipAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_161__["a"]; }); - if (options.relaxZeros !== false) { - if (prefix === '-' && ele.charAt(0) === '0') { - if (ele.charAt(1) === '{') { - ele = '0*' + ele.replace(/^0\{\d+\}/, ''); - } else { - ele = '0*' + ele.slice(1); - } - } - } +/* harmony import */ var _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zipWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_162__["a"]; }); - if (!intersection && !contains(comparison, 'string', ele)) { - res.push(prefix + ele); - } - if (intersection && contains(comparison, 'string', ele)) { - res.push(prefix + ele); - } - } - return res; -} -/** - * Zip strings (`for in` can be used on string characters) - */ -function zip(a, b) { - var arr = []; - for (var ch in a) arr.push([a[ch], b[ch]]); - return arr; -} -function compare(a, b) { - return a > b ? 1 : b > a ? -1 : 0; -} -function push(arr, ele) { - if (arr.indexOf(ele) === -1) arr.push(ele); - return arr; -} -function contains(arr, key, val) { - for (var i = 0; i < arr.length; i++) { - if (arr[i][key] === val) { - return true; - } - } - return false; -} -function countNines(min, len) { - return String(min).slice(0, -len) + repeat('9', len); -} -function countZeros(integer, zeros) { - return integer - (integer % Math.pow(10, zeros)); -} -function toQuantifier(digits) { - var start = digits[0]; - var stop = digits[1] ? (',' + digits[1]) : ''; - if (!stop && (!start || start === 1)) { - return ''; - } - return '{' + start + stop + '}'; -} -function toCharacterClass(a, b) { - return '[' + a + ((b - a === 1) ? '' : '-') + b + ']'; -} -function padding(str) { - return /^-?(0+)\d/.exec(str); -} -function padZeros(val, tok) { - if (tok.isPadded) { - var diff = Math.abs(tok.maxLen - String(val).length); - switch (diff) { - case 0: - return ''; - case 1: - return '0'; - default: { - return '0{' + diff + '}'; - } - } - } - return val; -} -/** - * Expose `toRegexRange` - */ -module.exports = toRegexRange; -/***/ }), -/***/ "../../node_modules/mimic-fn/index.js": -/***/ (function(module, exports, __webpack_require__) { -"use strict"; -const mimicFn = (to, from) => { - for (const prop of Reflect.ownKeys(from)) { - Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop)); - } - return to; -}; -module.exports = mimicFn; -// TODO: Remove this for the next major release -module.exports.default = mimicFn; -/***/ }), -/***/ "../../node_modules/minimatch/minimatch.js": -/***/ (function(module, exports, __webpack_require__) { -module.exports = minimatch -minimatch.Minimatch = Minimatch -var path = (function () { try { return __webpack_require__("path") } catch (e) {}}()) || { - sep: '/' -} -minimatch.sep = path.sep -var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} -var expand = __webpack_require__("../../node_modules/brace-expansion/index.js") -var plTypes = { - '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, - '?': { open: '(?:', close: ')?' }, - '+': { open: '(?:', close: ')+' }, - '*': { open: '(?:', close: ')*' }, - '@': { open: '(?:', close: ')' } -} -// any single thing other than / -// don't need to escape / when using new RegExp() -var qmark = '[^/]' -// * => any number of characters -var star = qmark + '*?' -// ** when dots are allowed. Anything goes, except .. and . -// not (^ or / followed by one or two dots followed by $ or /), -// followed by anything, any number of times. -var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' -// not a ^ or / followed by a dot, -// followed by anything, any number of times. -var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' -// characters that need to be escaped in RegExp. -var reSpecials = charSet('().*{}+?[]^$\\!') -// "abc" -> { a:true, b:true, c:true } -function charSet (s) { - return s.split('').reduce(function (set, c) { - set[c] = true - return set - }, {}) -} -// normalizes slashes. -var slashSplit = /\/+/ -minimatch.filter = filter -function filter (pattern, options) { - options = options || {} - return function (p, i, list) { - return minimatch(p, pattern, options) - } -} -function ext (a, b) { - b = b || {} - var t = {} - Object.keys(a).forEach(function (k) { - t[k] = a[k] - }) - Object.keys(b).forEach(function (k) { - t[k] = b[k] - }) - return t -} -minimatch.defaults = function (def) { - if (!def || typeof def !== 'object' || !Object.keys(def).length) { - return minimatch - } - var orig = minimatch - var m = function minimatch (p, pattern, options) { - return orig(p, pattern, ext(def, options)) - } - m.Minimatch = function Minimatch (pattern, options) { - return new orig.Minimatch(pattern, ext(def, options)) - } - m.Minimatch.defaults = function defaults (options) { - return orig.defaults(ext(def, options)).Minimatch - } - m.filter = function filter (pattern, options) { - return orig.filter(pattern, ext(def, options)) - } - m.defaults = function defaults (options) { - return orig.defaults(ext(def, options)) - } - m.makeRe = function makeRe (pattern, options) { - return orig.makeRe(pattern, ext(def, options)) - } - m.braceExpand = function braceExpand (pattern, options) { - return orig.braceExpand(pattern, ext(def, options)) - } - m.match = function (list, pattern, options) { - return orig.match(list, pattern, ext(def, options)) - } - return m -} -Minimatch.defaults = function (def) { - return minimatch.defaults(def).Minimatch -} -function minimatch (p, pattern, options) { - assertValidPattern(pattern) - if (!options) options = {} - // shortcut: comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - return false - } - return new Minimatch(pattern, options).match(p) -} -function Minimatch (pattern, options) { - if (!(this instanceof Minimatch)) { - return new Minimatch(pattern, options) - } - assertValidPattern(pattern) - if (!options) options = {} - pattern = pattern.trim() - // windows support: need to use /, not \ - if (!options.allowWindowsEscape && path.sep !== '/') { - pattern = pattern.split(path.sep).join('/') - } - this.options = options - this.set = [] - this.pattern = pattern - this.regexp = null - this.negate = false - this.comment = false - this.empty = false - this.partial = !!options.partial - // make the set of regexps etc. - this.make() -} -Minimatch.prototype.debug = function () {} -Minimatch.prototype.make = make -function make () { - var pattern = this.pattern - var options = this.options - // empty patterns and comments match nothing. - if (!options.nocomment && pattern.charAt(0) === '#') { - this.comment = true - return - } - if (!pattern) { - this.empty = true - return - } - // step 1: figure out negation, etc. - this.parseNegate() - // step 2: expand braces - var set = this.globSet = this.braceExpand() - if (options.debug) this.debug = function debug() { console.error.apply(console, arguments) } - this.debug(this.pattern, set) - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. - // These will be regexps, except in the case of "**", which is - // set to the GLOBSTAR object for globstar behavior, - // and will not contain any / characters - set = this.globParts = set.map(function (s) { - return s.split(slashSplit) - }) - this.debug(this.pattern, set) - // glob --> regexps - set = set.map(function (s, si, set) { - return s.map(this.parse, this) - }, this) - this.debug(this.pattern, set) - // filter out everything that didn't compile properly. - set = set.filter(function (s) { - return s.indexOf(false) === -1 - }) - this.debug(this.pattern, set) - this.set = set -} -Minimatch.prototype.parseNegate = parseNegate -function parseNegate () { - var pattern = this.pattern - var negate = false - var options = this.options - var negateOffset = 0 - if (options.nonegate) return - for (var i = 0, l = pattern.length - ; i < l && pattern.charAt(i) === '!' - ; i++) { - negate = !negate - negateOffset++ - } - if (negateOffset) this.pattern = pattern.substr(negateOffset) - this.negate = negate -} -// Brace expansion: -// a{b,c}d -> abd acd -// a{b,}c -> abc ac -// a{0..3}d -> a0d a1d a2d a3d -// a{b,c{d,e}f}g -> abg acdfg acefg -// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg -// -// Invalid sets are not expanded. -// a{2..}b -> a{2..}b -// a{b}c -> a{b}c -minimatch.braceExpand = function (pattern, options) { - return braceExpand(pattern, options) -} -Minimatch.prototype.braceExpand = braceExpand -function braceExpand (pattern, options) { - if (!options) { - if (this instanceof Minimatch) { - options = this.options - } else { - options = {} - } - } - pattern = typeof pattern === 'undefined' - ? this.pattern : pattern - assertValidPattern(pattern) - // Thanks to Yeting Li for - // improving this regexp to avoid a ReDOS vulnerability. - if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) { - // shortcut. no need to expand. - return [pattern] - } - return expand(pattern) -} -var MAX_PATTERN_LENGTH = 1024 * 64 -var assertValidPattern = function (pattern) { - if (typeof pattern !== 'string') { - throw new TypeError('invalid pattern') - } - if (pattern.length > MAX_PATTERN_LENGTH) { - throw new TypeError('pattern is too long') - } -} -// parse a component of the expanded set. -// At this point, no pattern may contain "/" in it -// so we're going to return a 2d array, where each entry is the full -// pattern, split on '/', and then turned into a regular expression. -// A regexp is made at the end which joins each array with an -// escaped /, and another full one which joins each regexp with |. -// -// Following the lead of Bash 4.1, note that "**" only has special meaning -// when it is the *only* thing in a path portion. Otherwise, any series -// of * is equivalent to a single *. Globstar behavior is enabled by -// default, and can be disabled by setting options.noglobstar. -Minimatch.prototype.parse = parse -var SUBPARSE = {} -function parse (pattern, isSub) { - assertValidPattern(pattern) - var options = this.options - // shortcuts - if (pattern === '**') { - if (!options.noglobstar) - return GLOBSTAR - else - pattern = '*' - } - if (pattern === '') return '' - var re = '' - var hasMagic = !!options.nocase - var escaping = false - // ? => one single character - var patternListStack = [] - var negativeLists = [] - var stateChar - var inClass = false - var reClassStart = -1 - var classStart = -1 - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. - var patternStart = pattern.charAt(0) === '.' ? '' // anything - // not (start or / followed by . or .. followed by / or end) - : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' - : '(?!\\.)' - var self = this - function clearStateChar () { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - self.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - for (var i = 0, len = pattern.length, c - ; (i < len) && (c = pattern.charAt(i)) - ; i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - // skip over any that are escaped. - if (escaping && reSpecials[c]) { - re += '\\' + c - escaping = false - continue - } - switch (c) { - /* istanbul ignore next */ - case '/': { - // completely not allowed, even escaped. - // Should already be path-split by now. - return false - } - case '\\': - clearStateChar() - escaping = true - continue - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - self.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - case '(': - if (inClass) { - re += '(' - continue - } - if (!stateChar) { - re += '\\(' - continue - } - patternListStack.push({ - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close - }) - // negation is (?:(?!js)[^/]*) - re += stateChar === '!' ? '(?:(?!(?:' : '(?:' - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - case ')': - if (inClass || !patternListStack.length) { - re += '\\)' - continue - } - clearStateChar() - hasMagic = true - var pl = patternListStack.pop() - // negation is (?:(?!js)[^/]*) - // The others are (?:) - re += pl.close - if (pl.type === '!') { - negativeLists.push(pl) - } - pl.reEnd = re.length - continue - case '|': - if (inClass || !patternListStack.length || escaping) { - re += '\\|' - escaping = false - continue - } - clearStateChar() - re += '|' - continue - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - if (inClass) { - re += '\\' + c - continue - } - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - escaping = false - continue - } - // handle the case where we left a class open. - // "[z-a]" is valid, equivalent to "\[z-a\]" - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - var cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + cs + ']') - } catch (er) { - // not a valid class! - var sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' - hasMagic = hasMagic || sp[1] - inClass = false - continue - } - // finish up the class. - hasMagic = true - inClass = false - re += c - continue - default: - // swallow any state char that wasn't consumed - clearStateChar() - if (escaping) { - // no need - escaping = false - } else if (reSpecials[c] - && !(c === '^' && inClass)) { - re += '\\' - } - re += c - } // switch - } // for - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.substr(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substr(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - var tail = re.slice(pl.reStart + pl.open.length) - this.debug('setting tail', re, pl) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - this.debug('tail=%j\n %s', tail, tail, pl, re) - var t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - var addPatternStart = false - switch (re.charAt(0)) { - case '[': case '.': case '(': addPatternStart = true - } - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (var n = negativeLists.length - 1; n > -1; n--) { - var nl = negativeLists[n] - var nlBefore = re.slice(0, nl.reStart) - var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) - var nlAfter = re.slice(nl.reEnd) - nlLast += nlAfter - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - var openParensBefore = nlBefore.split('(').length - 1 - var cleanAfter = nlAfter - for (i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - var dollar = '' - if (nlAfter === '' && isSub !== SUBPARSE) { - dollar = '$' - } - var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast - re = newRe - } - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - if (addPatternStart) { - re = patternStart + re - } - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - var flags = options.nocase ? 'i' : '' - try { - var regExp = new RegExp('^' + re + '$', flags) - } catch (er) /* istanbul ignore next - should be impossible */ { - // If it was an invalid regular expression, then it can't match - // anything. This trick looks for a character after the end of - // the string, which is of course impossible, except in multi-line - // mode, but it's not a /m regex. - return new RegExp('$.') - } - - regExp._glob = pattern - regExp._src = re - - return regExp -} -minimatch.makeRe = function (pattern, options) { - return new Minimatch(pattern, options || {}).makeRe() -} - -Minimatch.prototype.makeRe = makeRe -function makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - var set = this.set - if (!set.length) { - this.regexp = false - return this.regexp - } - var options = this.options - var twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - var flags = options.nocase ? 'i' : '' - var re = set.map(function (pattern) { - return pattern.map(function (p) { - return (p === GLOBSTAR) ? twoStar - : (typeof p === 'string') ? regExpEscape(p) - : p._src - }).join('\\\/') - }).join('|') - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' - try { - this.regexp = new RegExp(re, flags) - } catch (ex) /* istanbul ignore next - should be impossible */ { - this.regexp = false - } - return this.regexp -} -minimatch.match = function (list, pattern, options) { - options = options || {} - var mm = new Minimatch(pattern, options) - list = list.filter(function (f) { - return mm.match(f) - }) - if (mm.options.nonull && !list.length) { - list.push(pattern) - } - return list -} -Minimatch.prototype.match = function match (f, partial) { - if (typeof partial === 'undefined') partial = this.partial - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - if (f === '/' && partial) return true - var options = this.options - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') - } - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - var set = this.set - this.debug(this.pattern, 'set', set) - // Find the basename of the path by looking for the last non-empty segment - var filename - var i - for (i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - for (i = 0; i < set.length; i++) { - var pattern = set[i] - var file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - var hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate -} -// set partial to true to test if, for example, -// "/a/b" matches the start of "/*/b/*/d" -// Partial means, if you run out of file before you run -// out of pattern, then that's fine, as long as all -// the parts match. -Minimatch.prototype.matchOne = function (file, pattern, partial) { - var options = this.options - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) - this.debug('matchOne', file.length, pattern.length) - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] - this.debug(pattern, p, f) - // should be impossible. - // some invalid regexp stuff in the set. - /* istanbul ignore if */ - if (p === false) return false - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - /* istanbul ignore if */ - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - hit = f === p - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } - if (!hit) return false - } +//# sourceMappingURL=index.js.map - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* +/***/ }), - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else /* istanbul ignore else */ if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - return (fi === fl - 1) && (file[fi] === '') - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // should be unreachable. - /* istanbul ignore next */ - throw new Error('wtf?') -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncSubject; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -// replace stuff like \* with * -function globUnescape (s) { - return s.replace(/\\(.)/g, '$1') -} -function regExpEscape (s) { - return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') -} +var AsyncSubject = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsyncSubject, _super); + function AsyncSubject() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._value = null; + _this._hasValue = false; + _this._isComplete = false; + return _this; + } + AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) { + var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete; + if (hasError) { + subscriber.error(thrownError); + } + else if (isStopped || _isComplete) { + _hasValue && subscriber.next(_value); + subscriber.complete(); + } + }; + AsyncSubject.prototype.next = function (value) { + if (!this.isStopped) { + this._value = value; + this._hasValue = true; + } + }; + AsyncSubject.prototype.complete = function () { + var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete; + if (!_isComplete) { + this._isComplete = true; + _hasValue && _super.prototype.next.call(this, _value); + _super.prototype.complete.call(this); + } + }; + return AsyncSubject; +}(_Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"])); +//# sourceMappingURL=AsyncSubject.js.map /***/ }), -/***/ "../../node_modules/minimist/index.js": -/***/ (function(module, exports) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -module.exports = function (args, opts) { - if (!opts) opts = {}; - - var flags = { bools : {}, strings : {}, unknownFn: null }; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BehaviorSubject; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); - if (typeof opts['unknown'] === 'function') { - flags.unknownFn = opts['unknown']; - } - if (typeof opts['boolean'] === 'boolean' && opts['boolean']) { - flags.allBools = true; - } else { - [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { - flags.bools[key] = true; - }); +var BehaviorSubject = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(BehaviorSubject, _super); + function BehaviorSubject(_value) { + var _this = _super.call(this) || this; + _this._value = _value; + return _this; } - - var aliases = {}; - Object.keys(opts.alias || {}).forEach(function (key) { - aliases[key] = [].concat(opts.alias[key]); - aliases[key].forEach(function (x) { - aliases[x] = [key].concat(aliases[key].filter(function (y) { - return x !== y; - })); - }); + Object.defineProperty(BehaviorSubject.prototype, "value", { + get: function () { + return this.getValue(); + }, + enumerable: false, + configurable: true }); - - [].concat(opts.string).filter(Boolean).forEach(function (key) { - flags.strings[key] = true; - if (aliases[key]) { - flags.strings[aliases[key]] = true; + BehaviorSubject.prototype._subscribe = function (subscriber) { + var subscription = _super.prototype._subscribe.call(this, subscriber); + !subscription.closed && subscriber.next(this._value); + return subscription; + }; + BehaviorSubject.prototype.getValue = function () { + var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value; + if (hasError) { + throw thrownError; } - }); + this._throwIfClosed(); + return _value; + }; + BehaviorSubject.prototype.next = function (value) { + _super.prototype.next.call(this, (this._value = value)); + }; + return BehaviorSubject; +}(_Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"])); - var defaults = opts['default'] || {}; - - var argv = { _ : [] }; - Object.keys(flags.bools).forEach(function (key) { - setArg(key, defaults[key] === undefined ? false : defaults[key]); - }); - - var notFlags = []; +//# sourceMappingURL=BehaviorSubject.js.map - if (args.indexOf('--') !== -1) { - notFlags = args.slice(args.indexOf('--')+1); - args = args.slice(0, args.indexOf('--')); - } +/***/ }), - function argDefined(key, arg) { - return (flags.allBools && /^--[^=]+$/.test(arg)) || - flags.strings[key] || flags.bools[key] || aliases[key]; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/Notification.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - function setArg (key, val, arg) { - if (arg && flags.unknownFn && !argDefined(key, arg)) { - if (flags.unknownFn(arg) === false) return; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return NotificationKind; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Notification; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return observeNotification; }); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/of.js"); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/throwError.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - var value = !flags.strings[key] && isNumber(val) - ? Number(val) : val - ; - setKey(argv, key.split('.'), value); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), value); - }); - } - function setKey (obj, keys, value) { - var o = obj; - for (var i = 0; i < keys.length-1; i++) { - var key = keys[i]; - if (isConstructorOrProto(o, key)) return; - if (o[key] === undefined) o[key] = {}; - if (o[key] === Object.prototype || o[key] === Number.prototype - || o[key] === String.prototype) o[key] = {}; - if (o[key] === Array.prototype) o[key] = []; - o = o[key]; - } - var key = keys[keys.length - 1]; - if (isConstructorOrProto(o, key)) return; - if (o === Object.prototype || o === Number.prototype - || o === String.prototype) o = {}; - if (o === Array.prototype) o = []; - if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') { - o[key] = value; - } - else if (Array.isArray(o[key])) { - o[key].push(value); - } - else { - o[key] = [ o[key], value ]; - } + +var NotificationKind; +(function (NotificationKind) { + NotificationKind["NEXT"] = "N"; + NotificationKind["ERROR"] = "E"; + NotificationKind["COMPLETE"] = "C"; +})(NotificationKind || (NotificationKind = {})); +var Notification = (function () { + function Notification(kind, value, error) { + this.kind = kind; + this.value = value; + this.error = error; + this.hasValue = kind === 'N'; } - - function aliasIsBoolean(key) { - return aliases[key].some(function (x) { - return flags.bools[x]; - }); + Notification.prototype.observe = function (observer) { + return observeNotification(this, observer); + }; + Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) { + var _a = this, kind = _a.kind, value = _a.value, error = _a.error; + return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler(); + }; + Notification.prototype.accept = function (nextOrObserver, error, complete) { + var _a; + return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_3__[/* isFunction */ "a"])((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next) + ? this.observe(nextOrObserver) + : this.do(nextOrObserver, error, complete); + }; + Notification.prototype.toObservable = function () { + var _a = this, kind = _a.kind, value = _a.value, error = _a.error; + var result = kind === 'N' + ? + Object(_observable_of__WEBPACK_IMPORTED_MODULE_1__[/* of */ "a"])(value) + : + kind === 'E' + ? + Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_2__[/* throwError */ "a"])(function () { return error; }) + : + kind === 'C' + ? + _observable_empty__WEBPACK_IMPORTED_MODULE_0__[/* EMPTY */ "a"] + : + 0; + if (!result) { + throw new TypeError("Unexpected notification kind " + kind); + } + return result; + }; + Notification.createNext = function (value) { + return new Notification('N', value); + }; + Notification.createError = function (err) { + return new Notification('E', undefined, err); + }; + Notification.createComplete = function () { + return Notification.completeNotification; + }; + Notification.completeNotification = new Notification('C'); + return Notification; +}()); + +function observeNotification(notification, observer) { + var _a, _b, _c; + var _d = notification, kind = _d.kind, value = _d.value, error = _d.error; + if (typeof kind !== 'string') { + throw new TypeError('Invalid notification, missing "kind"'); } + kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer); +} +//# sourceMappingURL=Notification.js.map - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - - if (/^--.+=/.test(arg)) { - // Using [\s\S] instead of . because js doesn't support the - // 'dotall' regex modifier. See: - // http://stackoverflow.com/a/1068308/13216 - var m = arg.match(/^--([^=]+)=([\s\S]*)$/); - var key = m[1]; - var value = m[2]; - if (flags.bools[key]) { - value = value !== 'false'; - } - setArg(key, value, arg); - } - else if (/^--no-.+/.test(arg)) { - var key = arg.match(/^--no-(.+)/)[1]; - setArg(key, false, arg); - } - else if (/^--.+/.test(arg)) { - var key = arg.match(/^--(.+)/)[1]; - var next = args[i + 1]; - if (next !== undefined && !/^-/.test(next) - && !flags.bools[key] - && !flags.allBools - && (aliases[key] ? !aliasIsBoolean(key) : true)) { - setArg(key, next, arg); - i++; - } - else if (/^(true|false)$/.test(next)) { - setArg(key, next === 'true', arg); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true, arg); - } - } - else if (/^-[^-]+/.test(arg)) { - var letters = arg.slice(1,-1).split(''); - - var broken = false; - for (var j = 0; j < letters.length; j++) { - var next = arg.slice(j+2); - - if (next === '-') { - setArg(letters[j], next, arg) - continue; - } - - if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { - setArg(letters[j], next.split('=')[1], arg); - broken = true; - break; - } - - if (/[A-Za-z]/.test(letters[j]) - && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { - setArg(letters[j], next, arg); - broken = true; - break; - } - - if (letters[j+1] && letters[j+1].match(/\W/)) { - setArg(letters[j], arg.slice(j+2), arg); - broken = true; - break; - } - else { - setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); - } - } - - var key = arg.slice(-1)[0]; - if (!broken && key !== '-') { - if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) - && !flags.bools[key] - && (aliases[key] ? !aliasIsBoolean(key) : true)) { - setArg(key, args[i+1], arg); - i++; - } - else if (args[i+1] && /^(true|false)$/.test(args[i+1])) { - setArg(key, args[i+1] === 'true', arg); - i++; - } - else { - setArg(key, flags.strings[key] ? '' : true, arg); - } - } - } - else { - if (!flags.unknownFn || flags.unknownFn(arg) !== false) { - argv._.push( - flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) - ); - } - if (opts.stopEarly) { - argv._.push.apply(argv._, args.slice(i + 1)); - break; - } - } - } - - Object.keys(defaults).forEach(function (key) { - if (!hasKey(argv, key.split('.'))) { - setKey(argv, key.split('.'), defaults[key]); - - (aliases[key] || []).forEach(function (x) { - setKey(argv, x.split('.'), defaults[key]); - }); - } - }); - - if (opts['--']) { - argv['--'] = new Array(); - notFlags.forEach(function(key) { - argv['--'].push(key); - }); - } - else { - notFlags.forEach(function(key) { - argv._.push(key); - }); - } - - return argv; -}; +/***/ }), -function hasKey (obj, keys) { - var o = obj; - keys.slice(0,-1).forEach(function (key) { - o = (o[key] || {}); - }); +/***/ "../../node_modules/rxjs/dist/esm5/internal/NotificationFactories.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var key = keys[keys.length - 1]; - return key in o; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return COMPLETE_NOTIFICATION; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return errorNotification; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return nextNotification; }); +/* unused harmony export createNotification */ +var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })(); +function errorNotification(error) { + return createNotification('E', undefined, error); } - -function isNumber (x) { - if (typeof x === 'number') return true; - if (/^0x[0-9a-f]+$/i.test(x)) return true; - return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +function nextNotification(value) { + return createNotification('N', value, undefined); } - - -function isConstructorOrProto (obj, key) { - return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__'; +function createNotification(kind, value, error) { + return { + kind: kind, + value: value, + error: error, + }; } - +//# sourceMappingURL=NotificationFactories.js.map /***/ }), -/***/ "../../node_modules/mixin-deep/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/Observable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Observable; }); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js"); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/pipe.js"); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js"); -var isExtendable = __webpack_require__("../../node_modules/mixin-deep/node_modules/is-extendable/index.js"); -var forIn = __webpack_require__("../../node_modules/for-in/index.js"); -function mixinDeep(target, objects) { - var len = arguments.length, i = 0; - while (++i < len) { - var obj = arguments[i]; - if (isObject(obj)) { - forIn(obj, copy, target); - } - } - return target; -} -/** - * Copy properties from the source object to the - * target object. - * - * @param {*} `val` - * @param {String} `key` - */ -function copy(val, key) { - if (!isValidKey(key)) { - return; - } - var obj = this[key]; - if (isObject(val) && isObject(obj)) { - mixinDeep(obj, val); - } else { - this[key] = val; - } -} -/** - * Returns true if `val` is an object or function. - * - * @param {any} val - * @return {Boolean} - */ +var Observable = (function () { + function Observable(subscribe) { + 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 _this = this; + var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new _Subscriber__WEBPACK_IMPORTED_MODULE_0__[/* SafeSubscriber */ "a"](observerOrNext, error, complete); + Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_6__[/* errorContext */ "b"])(function () { + var _a = _this, operator = _a.operator, source = _a.source; + subscriber.add(operator + ? + operator.call(subscriber, source) + : source + ? + _this._subscribe(subscriber) + : + _this._trySubscribe(subscriber)); + }); + return subscriber; + }; + Observable.prototype._trySubscribe = function (sink) { + try { + return this._subscribe(sink); + } + catch (err) { + sink.error(err); + } + }; + Observable.prototype.forEach = function (next, promiseCtor) { + var _this = this; + promiseCtor = getPromiseCtor(promiseCtor); + return new promiseCtor(function (resolve, reject) { + var subscriber = new _Subscriber__WEBPACK_IMPORTED_MODULE_0__[/* SafeSubscriber */ "a"]({ + next: function (value) { + try { + next(value); + } + catch (err) { + reject(err); + subscriber.unsubscribe(); + } + }, + error: reject, + complete: resolve, + }); + _this.subscribe(subscriber); + }); + }; + Observable.prototype._subscribe = function (subscriber) { + var _a; + return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); + }; + Observable.prototype[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__[/* observable */ "a"]] = function () { + return this; + }; + Observable.prototype.pipe = function () { + var operations = []; + for (var _i = 0; _i < arguments.length; _i++) { + operations[_i] = arguments[_i]; + } + return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__[/* pipeFromArray */ "b"])(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 isObject(val) { - return isExtendable(val) && !Array.isArray(val); +function getPromiseCtor(promiseCtor) { + var _a; + return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : _config__WEBPACK_IMPORTED_MODULE_4__[/* config */ "a"].Promise) !== null && _a !== void 0 ? _a : Promise; } - -/** - * Returns true if `key` is a valid key to use when extending objects. - * - * @param {String} `key` - * @return {Boolean} - */ - -function isValidKey(key) { - return key !== '__proto__' && key !== 'constructor' && key !== 'prototype'; -}; - -/** - * Expose `mixinDeep` - */ - -module.exports = mixinDeep; - +function isObserver(value) { + return value && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(value.next) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(value.error) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(value.complete); +} +function isSubscriber(value) { + return (value && value instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__[/* Subscriber */ "b"]) || (isObserver(value) && Object(_Subscription__WEBPACK_IMPORTED_MODULE_1__[/* isSubscription */ "c"])(value)); +} +//# sourceMappingURL=Observable.js.map /***/ }), -/***/ "../../node_modules/mixin-deep/node_modules/is-extendable/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ReplaySubject; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js"); -var isPlainObject = __webpack_require__("../../node_modules/is-plain-object/index.js"); -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; +var ReplaySubject = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(ReplaySubject, _super); + function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) { + if (_bufferSize === void 0) { _bufferSize = Infinity; } + if (_windowTime === void 0) { _windowTime = Infinity; } + if (_timestampProvider === void 0) { _timestampProvider = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_2__[/* dateTimestampProvider */ "a"]; } + var _this = _super.call(this) || this; + _this._bufferSize = _bufferSize; + _this._windowTime = _windowTime; + _this._timestampProvider = _timestampProvider; + _this._buffer = []; + _this._infiniteTimeWindow = true; + _this._infiniteTimeWindow = _windowTime === Infinity; + _this._bufferSize = Math.max(1, _bufferSize); + _this._windowTime = Math.max(1, _windowTime); + return _this; + } + ReplaySubject.prototype.next = function (value) { + var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime; + if (!isStopped) { + _buffer.push(value); + !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime); + } + this._trimBuffer(); + _super.prototype.next.call(this, value); + }; + ReplaySubject.prototype._subscribe = function (subscriber) { + this._throwIfClosed(); + this._trimBuffer(); + var subscription = this._innerSubscribe(subscriber); + var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer; + var copy = _buffer.slice(); + for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) { + subscriber.next(copy[i]); + } + this._checkFinalizedStatuses(subscriber); + return subscription; + }; + ReplaySubject.prototype._trimBuffer = function () { + var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow; + var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize; + _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize); + if (!_infiniteTimeWindow) { + var now = _timestampProvider.now(); + var last = 0; + for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) { + last = i; + } + last && _buffer.splice(0, last + 1); + } + }; + return ReplaySubject; +}(_Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"])); +//# sourceMappingURL=ReplaySubject.js.map /***/ }), -/***/ "../../node_modules/multimatch/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/Scheduler.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Scheduler; }); +/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js"); -const minimatch = __webpack_require__("../../node_modules/minimatch/minimatch.js"); -const arrayUnion = __webpack_require__("../../node_modules/array-union/index.js"); -const arrayDiffer = __webpack_require__("../../node_modules/array-differ/index.js"); -const arrify = __webpack_require__("../../node_modules/arrify/index.js"); - -module.exports = (list, patterns, options = {}) => { - list = arrify(list); - patterns = arrify(patterns); - - if (list.length === 0 || patterns.length === 0) { - return []; - } - - return patterns.reduce((result, pattern) => { - let process = arrayUnion; - - if (pattern[0] === '!') { - pattern = pattern.slice(1); - process = arrayDiffer; - } - - return process(result, minimatch.match(list, pattern, options)); - }, []); -}; +var Scheduler = (function () { + function Scheduler(schedulerActionCtor, now) { + if (now === void 0) { now = Scheduler.now; } + this.schedulerActionCtor = schedulerActionCtor; + this.now = now; + } + Scheduler.prototype.schedule = function (work, delay, state) { + if (delay === void 0) { delay = 0; } + return new this.schedulerActionCtor(this, work).schedule(state, delay); + }; + Scheduler.now = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__[/* dateTimestampProvider */ "a"].now; + return Scheduler; +}()); +//# sourceMappingURL=Scheduler.js.map /***/ }), -/***/ "../../node_modules/mute-stream/mute.js": -/***/ (function(module, exports, __webpack_require__) { - -var Stream = __webpack_require__("stream") - -module.exports = MuteStream - -// var out = new MuteStream(process.stdout) -// argument auto-pipes -function MuteStream (opts) { - Stream.apply(this) - opts = opts || {} - this.writable = this.readable = true - this.muted = false - this.on('pipe', this._onpipe) - this.replace = opts.replace - - // For readline-type situations - // This much at the start of a line being redrawn after a ctrl char - // is seen (such as backspace) won't be redrawn as the replacement - this._prompt = opts.prompt || null - this._hadControl = false -} - -MuteStream.prototype = Object.create(Stream.prototype) - -Object.defineProperty(MuteStream.prototype, 'constructor', { - value: MuteStream, - enumerable: false -}) - -MuteStream.prototype.mute = function () { - this.muted = true -} - -MuteStream.prototype.unmute = function () { - this.muted = false -} - -Object.defineProperty(MuteStream.prototype, '_onpipe', { - value: onPipe, - enumerable: false, - writable: true, - configurable: true -}) - -function onPipe (src) { - this._src = src -} - -Object.defineProperty(MuteStream.prototype, 'isTTY', { - get: getIsTTY, - set: setIsTTY, - enumerable: true, - configurable: true -}) - -function getIsTTY () { - return( (this._dest) ? this._dest.isTTY - : (this._src) ? this._src.isTTY - : false - ) -} - -// basically just get replace the getter/setter with a regular value -function setIsTTY (isTTY) { - Object.defineProperty(this, 'isTTY', { - value: isTTY, - enumerable: true, - writable: true, - configurable: true - }) -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/Subject.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -Object.defineProperty(MuteStream.prototype, 'rows', { - get: function () { - return( this._dest ? this._dest.rows - : this._src ? this._src.rows - : undefined ) - }, enumerable: true, configurable: true }) +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subject; }); +/* unused harmony export AnonymousSubject */ +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js"); +/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); +/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js"); -Object.defineProperty(MuteStream.prototype, 'columns', { - get: function () { - return( this._dest ? this._dest.columns - : this._src ? this._src.columns - : undefined ) - }, enumerable: true, configurable: true }) -MuteStream.prototype.pipe = function (dest, options) { - this._dest = dest - return Stream.prototype.pipe.call(this, dest, options) -} -MuteStream.prototype.pause = function () { - if (this._src) return this._src.pause() -} -MuteStream.prototype.resume = function () { - if (this._src) return this._src.resume() -} -MuteStream.prototype.write = function (c) { - if (this.muted) { - if (!this.replace) return true - if (c.match(/^\u001b/)) { - if(c.indexOf(this._prompt) === 0) { - c = c.substr(this._prompt.length); - c = c.replace(/./g, this.replace); - c = this._prompt + c; - } - this._hadControl = true - return this.emit('data', c) - } else { - if (this._prompt && this._hadControl && - c.indexOf(this._prompt) === 0) { - this._hadControl = false - this.emit('data', this._prompt) - c = c.substr(this._prompt.length) - } - c = c.toString().replace(/./g, this.replace) +var Subject = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(Subject, _super); + function Subject() { + var _this = _super.call(this) || this; + _this.closed = false; + _this.currentObservers = null; + _this.observers = []; + _this.isStopped = false; + _this.hasError = false; + _this.thrownError = null; + return _this; } - } - this.emit('data', c) -} + Subject.prototype.lift = function (operator) { + var subject = new AnonymousSubject(this, this); + subject.operator = operator; + return subject; + }; + Subject.prototype._throwIfClosed = function () { + if (this.closed) { + throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__[/* ObjectUnsubscribedError */ "a"](); + } + }; + Subject.prototype.next = function (value) { + var _this = this; + Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__[/* errorContext */ "b"])(function () { + var e_1, _a; + _this._throwIfClosed(); + if (!_this.isStopped) { + if (!_this.currentObservers) { + _this.currentObservers = Array.from(_this.observers); + } + try { + for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) { + var observer = _c.value; + observer.next(value); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + } + }); + }; + Subject.prototype.error = function (err) { + var _this = this; + Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__[/* errorContext */ "b"])(function () { + _this._throwIfClosed(); + if (!_this.isStopped) { + _this.hasError = _this.isStopped = true; + _this.thrownError = err; + var observers = _this.observers; + while (observers.length) { + observers.shift().error(err); + } + } + }); + }; + Subject.prototype.complete = function () { + var _this = this; + Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__[/* errorContext */ "b"])(function () { + _this._throwIfClosed(); + if (!_this.isStopped) { + _this.isStopped = true; + var observers = _this.observers; + while (observers.length) { + observers.shift().complete(); + } + } + }); + }; + Subject.prototype.unsubscribe = function () { + this.isStopped = this.closed = true; + this.observers = this.currentObservers = null; + }; + Object.defineProperty(Subject.prototype, "observed", { + get: function () { + var _a; + return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; + }, + enumerable: false, + configurable: true + }); + Subject.prototype._trySubscribe = function (subscriber) { + this._throwIfClosed(); + return _super.prototype._trySubscribe.call(this, subscriber); + }; + Subject.prototype._subscribe = function (subscriber) { + this._throwIfClosed(); + this._checkFinalizedStatuses(subscriber); + return this._innerSubscribe(subscriber); + }; + Subject.prototype._innerSubscribe = function (subscriber) { + var _this = this; + var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers; + if (hasError || isStopped) { + return _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* EMPTY_SUBSCRIPTION */ "a"]; + } + this.currentObservers = null; + observers.push(subscriber); + return new _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"](function () { + _this.currentObservers = null; + Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_4__[/* arrRemove */ "a"])(observers, subscriber); + }); + }; + Subject.prototype._checkFinalizedStatuses = function (subscriber) { + var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped; + if (hasError) { + subscriber.error(thrownError); + } + else if (isStopped) { + subscriber.complete(); + } + }; + Subject.prototype.asObservable = function () { + var observable = new _Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"](); + observable.source = this; + return observable; + }; + Subject.create = function (destination, source) { + return new AnonymousSubject(destination, source); + }; + return Subject; +}(_Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"])); -MuteStream.prototype.end = function (c) { - if (this.muted) { - if (c && this.replace) { - c = c.toString().replace(/./g, this.replace) - } else { - c = null +var AnonymousSubject = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AnonymousSubject, _super); + function AnonymousSubject(destination, source) { + var _this = _super.call(this) || this; + _this.destination = destination; + _this.source = source; + return _this; } - } - if (c) this.emit('data', c) - this.emit('end') -} - -function proxy (fn) { return function () { - var d = this._dest - var s = this._src - if (d && d[fn]) d[fn].apply(d, arguments) - if (s && s[fn]) s[fn].apply(s, arguments) -}} - -MuteStream.prototype.destroy = proxy('destroy') -MuteStream.prototype.destroySoon = proxy('destroySoon') -MuteStream.prototype.close = proxy('close') + AnonymousSubject.prototype.next = function (value) { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); + }; + AnonymousSubject.prototype.error = function (err) { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); + }; + AnonymousSubject.prototype.complete = function () { + var _a, _b; + (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); + }; + AnonymousSubject.prototype._subscribe = function (subscriber) { + var _a, _b; + return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* EMPTY_SUBSCRIPTION */ "a"]; + }; + return AnonymousSubject; +}(Subject)); +//# sourceMappingURL=Subject.js.map /***/ }), -/***/ "../../node_modules/nanomatch/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/Subscriber.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Subscriber; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SafeSubscriber; }); +/* unused harmony export EMPTY_OBSERVER */ +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); +/* harmony import */ var _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony import */ var _NotificationFactories__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/NotificationFactories.js"); +/* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js"); +/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js"); -/** - * Module dependencies - */ - -var util = __webpack_require__("util"); -var toRegex = __webpack_require__("../../node_modules/to-regex/index.js"); -var extend = __webpack_require__("../../node_modules/nanomatch/node_modules/extend-shallow/index.js"); - -/** - * Local dependencies - */ - -var compilers = __webpack_require__("../../node_modules/nanomatch/lib/compilers.js"); -var parsers = __webpack_require__("../../node_modules/nanomatch/lib/parsers.js"); -var cache = __webpack_require__("../../node_modules/nanomatch/lib/cache.js"); -var utils = __webpack_require__("../../node_modules/nanomatch/lib/utils.js"); -var MAX_LENGTH = 1024 * 64; - -/** - * The main function takes a list of strings and one or more - * glob patterns to use for matching. - * - * ```js - * var nm = require('nanomatch'); - * nm(list, patterns[, options]); - * - * console.log(nm(['a.js', 'a.txt'], ['*.js'])); - * //=> [ 'a.js' ] - * ``` - * @param {Array} `list` A list of strings to match - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array} Returns an array of matches - * @summary false - * @api public - */ -function nanomatch(list, patterns, options) { - patterns = utils.arrayify(patterns); - list = utils.arrayify(list); - var len = patterns.length; - if (list.length === 0 || len === 0) { - return []; - } - if (len === 1) { - return nanomatch.match(list, patterns[0], options); - } - var negated = false; - var omit = []; - var keep = []; - var idx = -1; - while (++idx < len) { - var pattern = patterns[idx]; - if (typeof pattern === 'string' && pattern.charCodeAt(0) === 33 /* ! */) { - omit.push.apply(omit, nanomatch.match(list, pattern.slice(1), options)); - negated = true; - } else { - keep.push.apply(keep, nanomatch.match(list, pattern, options)); - } - } - // minimatch.match parity - if (negated && keep.length === 0) { - if (options && options.unixify === false) { - keep = list.slice(); - } else { - var unixify = utils.unixify(options); - for (var i = 0; i < list.length; i++) { - keep.push(unixify(list[i])); - } +var Subscriber = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(Subscriber, _super); + function Subscriber(destination) { + var _this = _super.call(this) || this; + _this.isStopped = false; + if (destination) { + _this.destination = destination; + if (Object(_Subscription__WEBPACK_IMPORTED_MODULE_2__[/* isSubscription */ "c"])(destination)) { + destination.add(_this); + } + } + else { + _this.destination = EMPTY_OBSERVER; + } + return _this; } - } - - var matches = utils.diff(keep, omit); - if (!options || options.nodupes !== false) { - return utils.unique(matches); - } + Subscriber.create = function (next, error, complete) { + return new SafeSubscriber(next, error, complete); + }; + Subscriber.prototype.next = function (value) { + if (this.isStopped) { + handleStoppedNotification(Object(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__[/* nextNotification */ "c"])(value), this); + } + else { + this._next(value); + } + }; + Subscriber.prototype.error = function (err) { + if (this.isStopped) { + handleStoppedNotification(Object(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__[/* errorNotification */ "b"])(err), this); + } + else { + this.isStopped = true; + this._error(err); + } + }; + Subscriber.prototype.complete = function () { + if (this.isStopped) { + handleStoppedNotification(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__[/* COMPLETE_NOTIFICATION */ "a"], this); + } + else { + this.isStopped = true; + this._complete(); + } + }; + Subscriber.prototype.unsubscribe = function () { + if (!this.closed) { + this.isStopped = true; + _super.prototype.unsubscribe.call(this); + this.destination = null; + } + }; + Subscriber.prototype._next = function (value) { + this.destination.next(value); + }; + Subscriber.prototype._error = function (err) { + try { + this.destination.error(err); + } + finally { + this.unsubscribe(); + } + }; + Subscriber.prototype._complete = function () { + try { + this.destination.complete(); + } + finally { + this.unsubscribe(); + } + }; + return Subscriber; +}(_Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"])); - return matches; +var _bind = Function.prototype.bind; +function bind(fn, thisArg) { + return _bind.call(fn, thisArg); } - -/** - * Similar to the main function, but `pattern` must be a string. - * - * ```js - * var nm = require('nanomatch'); - * nm.match(list, pattern[, options]); - * - * console.log(nm.match(['a.a', 'a.aa', 'a.b', 'a.c'], '*.a')); - * //=> ['a.a', 'a.aa'] - * ``` - * @param {Array} `list` Array of strings to match - * @param {String} `pattern` Glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array} Returns an array of matches - * @api public - */ - -nanomatch.match = function(list, pattern, options) { - if (Array.isArray(pattern)) { - throw new TypeError('expected pattern to be a string'); - } - - var unixify = utils.unixify(options); - var isMatch = memoize('match', pattern, options, nanomatch.matcher); - var matches = []; - - list = utils.arrayify(list); - var len = list.length; - var idx = -1; - - while (++idx < len) { - var ele = list[idx]; - if (ele === pattern || isMatch(ele)) { - matches.push(utils.value(ele, unixify, options)); +var ConsumerObserver = (function () { + function ConsumerObserver(partialObserver) { + this.partialObserver = partialObserver; } - } - - // if no options were passed, uniquify results and return - if (typeof options === 'undefined') { - return utils.unique(matches); - } + ConsumerObserver.prototype.next = function (value) { + var partialObserver = this.partialObserver; + if (partialObserver.next) { + try { + partialObserver.next(value); + } + catch (error) { + handleUnhandledError(error); + } + } + }; + ConsumerObserver.prototype.error = function (err) { + var partialObserver = this.partialObserver; + if (partialObserver.error) { + try { + partialObserver.error(err); + } + catch (error) { + handleUnhandledError(error); + } + } + else { + handleUnhandledError(err); + } + }; + ConsumerObserver.prototype.complete = function () { + var partialObserver = this.partialObserver; + if (partialObserver.complete) { + try { + partialObserver.complete(); + } + catch (error) { + handleUnhandledError(error); + } + } + }; + return ConsumerObserver; +}()); +var SafeSubscriber = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(SafeSubscriber, _super); + function SafeSubscriber(observerOrNext, error, complete) { + var _this = _super.call(this) || this; + var partialObserver; + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(observerOrNext) || !observerOrNext) { + partialObserver = { + next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined, + error: error !== null && error !== void 0 ? error : undefined, + complete: complete !== null && complete !== void 0 ? complete : undefined, + }; + } + else { + var context_1; + if (_this && _config__WEBPACK_IMPORTED_MODULE_3__[/* config */ "a"].useDeprecatedNextContext) { + context_1 = Object.create(observerOrNext); + context_1.unsubscribe = function () { return _this.unsubscribe(); }; + partialObserver = { + next: observerOrNext.next && bind(observerOrNext.next, context_1), + error: observerOrNext.error && bind(observerOrNext.error, context_1), + complete: observerOrNext.complete && bind(observerOrNext.complete, context_1), + }; + } + else { + partialObserver = observerOrNext; + } + } + _this.destination = new ConsumerObserver(partialObserver); + return _this; + } + return SafeSubscriber; +}(Subscriber)); - if (matches.length === 0) { - if (options.failglob === true) { - throw new Error('no matches found for "' + pattern + '"'); +function handleUnhandledError(error) { + if (_config__WEBPACK_IMPORTED_MODULE_3__[/* config */ "a"].useDeprecatedSynchronousErrorHandling) { + Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_8__[/* captureError */ "a"])(error); } - if (options.nonull === true || options.nullglob === true) { - return [options.unescape ? utils.unescape(pattern) : pattern]; + else { + Object(_util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_4__[/* reportUnhandledError */ "a"])(error); } - } - - // if `opts.ignore` was defined, diff ignored list - if (options.ignore) { - matches = nanomatch.not(matches, options.ignore, options); - } - - return options.nodupes !== false ? utils.unique(matches) : matches; -}; - -/** - * Returns true if the specified `string` matches the given glob `pattern`. - * - * ```js - * var nm = require('nanomatch'); - * nm.isMatch(string, pattern[, options]); - * - * console.log(nm.isMatch('a.a', '*.a')); - * //=> true - * console.log(nm.isMatch('a.b', '*.a')); - * //=> false - * ``` - * @param {String} `string` String to match - * @param {String} `pattern` Glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if the string matches the glob pattern. - * @api public - */ - -nanomatch.isMatch = function(str, pattern, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string: "' + util.inspect(str) + '"'); - } - - if (utils.isEmptyString(str) || utils.isEmptyString(pattern)) { - return false; - } - - var equals = utils.equalsPattern(options); - if (equals(str)) { - return true; - } - - var isMatch = memoize('isMatch', pattern, options, nanomatch.matcher); - return isMatch(str); +} +function defaultErrorHandler(err) { + throw err; +} +function handleStoppedNotification(notification, subscriber) { + var onStoppedNotification = _config__WEBPACK_IMPORTED_MODULE_3__[/* config */ "a"].onStoppedNotification; + onStoppedNotification && _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_7__[/* timeoutProvider */ "a"].setTimeout(function () { return onStoppedNotification(notification, subscriber); }); +} +var EMPTY_OBSERVER = { + closed: true, + next: _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"], + error: defaultErrorHandler, + complete: _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"], }; +//# sourceMappingURL=Subscriber.js.map -/** - * Returns true if some of the elements in the given `list` match any of the - * given glob `patterns`. - * - * ```js - * var nm = require('nanomatch'); - * nm.some(list, patterns[, options]); - * - * console.log(nm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); - * // true - * console.log(nm.some(['foo.js'], ['*.js', '!foo.js'])); - * // false - * ``` - * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ +/***/ }), -nanomatch.some = function(list, patterns, options) { - if (typeof list === 'string') { - list = [list]; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/Subscription.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - for (var i = 0; i < list.length; i++) { - if (nanomatch(list[i], patterns, options).length === 1) { - return true; - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Subscription; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EMPTY_SUBSCRIPTION; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isSubscription; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js"); +/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); - return false; -}; -/** - * Returns true if every element in the given `list` matches - * at least one of the given glob `patterns`. - * - * ```js - * var nm = require('nanomatch'); - * nm.every(list, patterns[, options]); - * - * console.log(nm.every('foo.js', ['foo.js'])); - * // true - * console.log(nm.every(['foo.js', 'bar.js'], ['*.js'])); - * // true - * console.log(nm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js'])); - * // false - * console.log(nm.every(['foo.js'], ['*.js', '!foo.js'])); - * // false - * ``` - * @param {String|Array} `list` The string or array of strings to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ -nanomatch.every = function(list, patterns, options) { - if (typeof list === 'string') { - list = [list]; - } - for (var i = 0; i < list.length; i++) { - if (nanomatch(list[i], patterns, options).length !== 1) { - return false; +var Subscription = (function () { + function Subscription(initialTeardown) { + this.initialTeardown = initialTeardown; + this.closed = false; + this._parentage = null; + this._finalizers = null; } - } - - return true; -}; - -/** - * Returns true if **any** of the given glob `patterns` - * match the specified `string`. - * - * ```js - * var nm = require('nanomatch'); - * nm.any(string, patterns[, options]); - * - * console.log(nm.any('a.a', ['b.*', '*.a'])); - * //=> true - * console.log(nm.any('a.a', 'b.*')); - * //=> false - * ``` - * @param {String|Array} `str` The string to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ - -nanomatch.any = function(str, patterns, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string: "' + util.inspect(str) + '"'); - } - - if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) { - return false; - } - - if (typeof patterns === 'string') { - patterns = [patterns]; - } + Subscription.prototype.unsubscribe = function () { + var e_1, _a, e_2, _b; + var errors; + if (!this.closed) { + this.closed = true; + var _parentage = this._parentage; + if (_parentage) { + this._parentage = null; + if (Array.isArray(_parentage)) { + try { + for (var _parentage_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) { + var parent_1 = _parentage_1_1.value; + parent_1.remove(this); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1); + } + finally { if (e_1) throw e_1.error; } + } + } + else { + _parentage.remove(this); + } + } + var initialFinalizer = this.initialTeardown; + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(initialFinalizer)) { + try { + initialFinalizer(); + } + catch (e) { + errors = e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__[/* UnsubscriptionError */ "a"] ? e.errors : [e]; + } + } + var _finalizers = this._finalizers; + if (_finalizers) { + this._finalizers = null; + try { + for (var _finalizers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) { + var finalizer = _finalizers_1_1.value; + try { + execFinalizer(finalizer); + } + catch (err) { + errors = errors !== null && errors !== void 0 ? errors : []; + if (err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__[/* UnsubscriptionError */ "a"]) { + errors = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(errors)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(err.errors)); + } + else { + errors.push(err); + } + } + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1); + } + finally { if (e_2) throw e_2.error; } + } + } + if (errors) { + throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__[/* UnsubscriptionError */ "a"](errors); + } + } + }; + Subscription.prototype.add = function (teardown) { + var _a; + if (teardown && teardown !== this) { + if (this.closed) { + execFinalizer(teardown); + } + else { + if (teardown instanceof Subscription) { + if (teardown.closed || teardown._hasParent(this)) { + return; + } + teardown._addParent(this); + } + (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); + } + } + }; + Subscription.prototype._hasParent = function (parent) { + var _parentage = this._parentage; + return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent)); + }; + Subscription.prototype._addParent = function (parent) { + var _parentage = this._parentage; + this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent; + }; + Subscription.prototype._removeParent = function (parent) { + var _parentage = this._parentage; + if (_parentage === parent) { + this._parentage = null; + } + else if (Array.isArray(_parentage)) { + Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__[/* arrRemove */ "a"])(_parentage, parent); + } + }; + Subscription.prototype.remove = function (teardown) { + var _finalizers = this._finalizers; + _finalizers && Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__[/* arrRemove */ "a"])(_finalizers, teardown); + if (teardown instanceof Subscription) { + teardown._removeParent(this); + } + }; + Subscription.EMPTY = (function () { + var empty = new Subscription(); + empty.closed = true; + return empty; + })(); + return Subscription; +}()); - for (var i = 0; i < patterns.length; i++) { - if (nanomatch.isMatch(str, patterns[i], options)) { - return true; +var EMPTY_SUBSCRIPTION = Subscription.EMPTY; +function isSubscription(value) { + return (value instanceof Subscription || + (value && 'closed' in value && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(value.remove) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(value.add) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(value.unsubscribe))); +} +function execFinalizer(finalizer) { + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(finalizer)) { + finalizer(); } - } - return false; -}; - -/** - * Returns true if **all** of the given `patterns` - * match the specified string. - * - * ```js - * var nm = require('nanomatch'); - * nm.all(string, patterns[, options]); - * - * console.log(nm.all('foo.js', ['foo.js'])); - * // true - * - * console.log(nm.all('foo.js', ['*.js', '!foo.js'])); - * // false - * - * console.log(nm.all('foo.js', ['*.js', 'foo.js'])); - * // true - * - * console.log(nm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js'])); - * // true - * ``` - * @param {String|Array} `str` The string to test. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ - -nanomatch.all = function(str, patterns, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string: "' + util.inspect(str) + '"'); - } - - if (typeof patterns === 'string') { - patterns = [patterns]; - } - - for (var i = 0; i < patterns.length; i++) { - if (!nanomatch.isMatch(str, patterns[i], options)) { - return false; + else { + finalizer.unsubscribe(); } - } - return true; -}; - -/** - * Returns a list of strings that _**do not match any**_ of the given `patterns`. - * - * ```js - * var nm = require('nanomatch'); - * nm.not(list, patterns[, options]); - * - * console.log(nm.not(['a.a', 'b.b', 'c.c'], '*.a')); - * //=> ['b.b', 'c.c'] - * ``` - * @param {Array} `list` Array of strings to match. - * @param {String|Array} `patterns` One or more glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Array} Returns an array of strings that **do not match** the given patterns. - * @api public - */ - -nanomatch.not = function(list, patterns, options) { - var opts = extend({}, options); - var ignore = opts.ignore; - delete opts.ignore; +} +//# sourceMappingURL=Subscription.js.map - list = utils.arrayify(list); +/***/ }), - var matches = utils.diff(list, nanomatch(list, patterns, opts)); - if (ignore) { - matches = utils.diff(matches, nanomatch(list, ignore)); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/config.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return opts.nodupes !== false ? utils.unique(matches) : matches; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return config; }); +var config = { + onUnhandledError: null, + onStoppedNotification: null, + Promise: undefined, + useDeprecatedSynchronousErrorHandling: false, + useDeprecatedNextContext: false, }; +//# sourceMappingURL=config.js.map -/** - * Returns true if the given `string` contains the given pattern. Similar - * to [.isMatch](#isMatch) but the pattern can match any part of the string. - * - * ```js - * var nm = require('nanomatch'); - * nm.contains(string, pattern[, options]); - * - * console.log(nm.contains('aa/bb/cc', '*b')); - * //=> true - * console.log(nm.contains('aa/bb/cc', '*d')); - * //=> false - * ``` - * @param {String} `str` The string to match. - * @param {String|Array} `patterns` Glob pattern to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns true if the patter matches any part of `str`. - * @api public - */ - -nanomatch.contains = function(str, patterns, options) { - if (typeof str !== 'string') { - throw new TypeError('expected a string: "' + util.inspect(str) + '"'); - } - - if (typeof patterns === 'string') { - if (utils.isEmptyString(str) || utils.isEmptyString(patterns)) { - return false; - } +/***/ }), - var equals = utils.equalsPattern(patterns, options); - if (equals(str)) { - return true; - } - var contains = utils.containsPattern(patterns, options); - if (contains(str)) { - return true; - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var opts = extend({}, options, {contains: true}); - return nanomatch.any(str, patterns, opts); -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return firstValueFrom; }); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); -/** - * Returns true if the given pattern and options should enable - * the `matchBase` option. - * @return {Boolean} - * @api private - */ -nanomatch.matchBase = function(pattern, options) { - if (pattern && pattern.indexOf('/') !== -1 || !options) return false; - return options.basename === true || options.matchBase === true; -}; +function firstValueFrom(source, config) { + var hasConfig = typeof config === 'object'; + return new Promise(function (resolve, reject) { + var subscriber = new _Subscriber__WEBPACK_IMPORTED_MODULE_1__[/* SafeSubscriber */ "a"]({ + next: function (value) { + resolve(value); + subscriber.unsubscribe(); + }, + error: reject, + complete: function () { + if (hasConfig) { + resolve(config.defaultValue); + } + else { + reject(new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"]()); + } + }, + }); + source.subscribe(subscriber); + }); +} +//# sourceMappingURL=firstValueFrom.js.map -/** - * Filter the keys of the given object with the given `glob` pattern - * and `options`. Does not attempt to match nested keys. If you need this feature, - * use [glob-object][] instead. - * - * ```js - * var nm = require('nanomatch'); - * nm.matchKeys(object, patterns[, options]); - * - * var obj = { aa: 'a', ab: 'b', ac: 'c' }; - * console.log(nm.matchKeys(obj, '*b')); - * //=> { ab: 'b' } - * ``` - * @param {Object} `object` The object with keys to filter. - * @param {String|Array} `patterns` One or more glob patterns to use for matching. - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Object} Returns an object with only keys that match the given patterns. - * @api public - */ +/***/ }), -nanomatch.matchKeys = function(obj, patterns, options) { - if (!utils.isObject(obj)) { - throw new TypeError('expected the first argument to be an object'); - } - var keys = nanomatch(Object.keys(obj), patterns, options); - return utils.pick(obj, keys); -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/lastValueFrom.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Returns a memoized matcher function from the given glob `pattern` and `options`. - * The returned function takes a string to match as its only argument and returns - * true if the string is a match. - * - * ```js - * var nm = require('nanomatch'); - * nm.matcher(pattern[, options]); - * - * var isMatch = nm.matcher('*.!(*a)'); - * console.log(isMatch('a.a')); - * //=> false - * console.log(isMatch('a.b')); - * //=> true - * ``` - * @param {String} `pattern` Glob pattern - * @param {Object} `options` See available [options](#options) for changing how matches are performed. - * @return {Function} Returns a matcher function. - * @api public - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return lastValueFrom; }); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); -nanomatch.matcher = function matcher(pattern, options) { - if (utils.isEmptyString(pattern)) { - return function() { - return false; - }; - } +function lastValueFrom(source, config) { + var hasConfig = typeof config === 'object'; + return new Promise(function (resolve, reject) { + var _hasValue = false; + var _value; + source.subscribe({ + next: function (value) { + _value = value; + _hasValue = true; + }, + error: reject, + complete: function () { + if (_hasValue) { + resolve(_value); + } + else if (hasConfig) { + resolve(config.defaultValue); + } + else { + reject(new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"]()); + } + }, + }); + }); +} +//# sourceMappingURL=lastValueFrom.js.map - if (Array.isArray(pattern)) { - return compose(pattern, options, matcher); - } +/***/ }), - // if pattern is a regex - if (pattern instanceof RegExp) { - return test(pattern); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // if pattern is invalid - if (!utils.isString(pattern)) { - throw new TypeError('expected pattern to be an array, string or regex'); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ConnectableObservable; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js"); +/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - // if pattern is a non-glob string - if (!utils.hasSpecialChars(pattern)) { - if (options && options.nocase === true) { - pattern = pattern.toLowerCase(); - } - return utils.matchPath(pattern, options); - } - // if pattern is a glob string - var re = nanomatch.makeRe(pattern, options); - // if `options.matchBase` or `options.basename` is defined - if (nanomatch.matchBase(pattern, options)) { - return utils.matchBasename(re, options); - } - function test(regex) { - var equals = utils.equalsPattern(options); - var unixify = utils.unixify(options); - return function(str) { - if (equals(str)) { - return true; - } - if (regex.test(unixify(str))) { - return true; - } - return false; +var ConnectableObservable = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(ConnectableObservable, _super); + function ConnectableObservable(source, subjectFactory) { + var _this = _super.call(this) || this; + _this.source = source; + _this.subjectFactory = subjectFactory; + _this._subject = null; + _this._refCount = 0; + _this._connection = null; + if (Object(_util_lift__WEBPACK_IMPORTED_MODULE_5__[/* hasLift */ "a"])(source)) { + _this.lift = source.lift; + } + return _this; + } + ConnectableObservable.prototype._subscribe = function (subscriber) { + return this.getSubject().subscribe(subscriber); }; - } - - // create matcher function - var matcherFn = test(re); - // set result object from compiler on matcher function, - // as a non-enumerable property. useful for debugging - utils.define(matcherFn, 'result', re.result); - return matcherFn; -}; - -/** - * Returns an array of matches captured by `pattern` in `string, or - * `null` if the pattern did not match. - * - * ```js - * var nm = require('nanomatch'); - * nm.capture(pattern, string[, options]); - * - * console.log(nm.capture('test/*.js', 'test/foo.js')); - * //=> ['foo'] - * console.log(nm.capture('test/*.js', 'foo/bar.css')); - * //=> null - * ``` - * @param {String} `pattern` Glob pattern to use for matching. - * @param {String} `string` String to match - * @param {Object} `options` See available [options](#options) for changing how matches are performed - * @return {Boolean} Returns an array of captures if the string matches the glob pattern, otherwise `null`. - * @api public - */ - -nanomatch.capture = function(pattern, str, options) { - var re = nanomatch.makeRe(pattern, extend({capture: true}, options)); - var unixify = utils.unixify(options); - - function match() { - return function(string) { - var match = re.exec(unixify(string)); - if (!match) { - return null; - } - - return match.slice(1); + ConnectableObservable.prototype.getSubject = function () { + var subject = this._subject; + if (!subject || subject.isStopped) { + this._subject = this.subjectFactory(); + } + return this._subject; }; - } - - var capture = memoize('capture', pattern, options, match); - return capture(str); -}; - -/** - * Create a regular expression from the given glob `pattern`. - * - * ```js - * var nm = require('nanomatch'); - * nm.makeRe(pattern[, options]); - * - * console.log(nm.makeRe('*.js')); - * //=> /^(?:(\.[\\\/])?(?!\.)(?=.)[^\/]*?\.js)$/ - * ``` - * @param {String} `pattern` A glob pattern to convert to regex. - * @param {Object} `options` See available [options](#options) for changing how matches are performed. - * @return {RegExp} Returns a regex created from the given pattern. - * @api public - */ - -nanomatch.makeRe = function(pattern, options) { - if (pattern instanceof RegExp) { - return pattern; - } - - if (typeof pattern !== 'string') { - throw new TypeError('expected pattern to be a string'); - } + ConnectableObservable.prototype._teardown = function () { + this._refCount = 0; + var _connection = this._connection; + this._subject = this._connection = null; + _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe(); + }; + ConnectableObservable.prototype.connect = function () { + var _this = this; + var connection = this._connection; + if (!connection) { + connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"](); + var subject_1 = this.getSubject(); + connection.add(this.source.subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subject_1, undefined, function () { + _this._teardown(); + subject_1.complete(); + }, function (err) { + _this._teardown(); + subject_1.error(err); + }, function () { return _this._teardown(); }))); + if (connection.closed) { + this._connection = null; + connection = _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"].EMPTY; + } + } + return connection; + }; + ConnectableObservable.prototype.refCount = function () { + return Object(_operators_refCount__WEBPACK_IMPORTED_MODULE_3__[/* refCount */ "a"])()(this); + }; + return ConnectableObservable; +}(_Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"])); - if (pattern.length > MAX_LENGTH) { - throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); - } +//# sourceMappingURL=ConnectableObservable.js.map - function makeRe() { - var opts = utils.extend({wrap: false}, options); - var result = nanomatch.create(pattern, opts); - var regex = toRegex(result.output, opts); - utils.define(regex, 'result', result); - return regex; - } +/***/ }), - return memoize('makeRe', pattern, options, makeRe); -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/bindCallback.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Parses the given glob `pattern` and returns an object with the compiled `output` - * and optional source `map`. - * - * ```js - * var nm = require('nanomatch'); - * nm.create(pattern[, options]); - * - * console.log(nm.create('abc/*.js')); - * // { options: { source: 'string', sourcemap: true }, - * // state: {}, - * // compilers: - * // { ... }, - * // output: '(\\.[\\\\\\/])?abc\\/(?!\\.)(?=.)[^\\/]*?\\.js', - * // ast: - * // { type: 'root', - * // errors: [], - * // nodes: - * // [ ... ], - * // dot: false, - * // input: 'abc/*.js' }, - * // parsingErrors: [], - * // map: - * // { version: 3, - * // sources: [ 'string' ], - * // names: [], - * // mappings: 'AAAA,GAAG,EAAC,kBAAC,EAAC,EAAE', - * // sourcesContent: [ 'abc/*.js' ] }, - * // position: { line: 1, column: 28 }, - * // content: {}, - * // files: {}, - * // idx: 6 } - * ``` - * @param {String} `pattern` Glob pattern to parse and compile. - * @param {Object} `options` Any [options](#options) to change how parsing and compiling is performed. - * @return {Object} Returns an object with the parsed AST, compiled string and optional source map. - * @api public - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bindCallback; }); +/* harmony import */ var _bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js"); -nanomatch.create = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } - function create() { - return nanomatch.compile(nanomatch.parse(pattern, options), options); - } - return memoize('create', pattern, options, create); -}; +function bindCallback(callbackFunc, resultSelector, scheduler) { + return Object(_bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__[/* bindCallbackInternals */ "a"])(false, callbackFunc, resultSelector, scheduler); +} +//# sourceMappingURL=bindCallback.js.map -/** - * Parse the given `str` with the given `options`. - * - * ```js - * var nm = require('nanomatch'); - * nm.parse(pattern[, options]); - * - * var ast = nm.parse('a/{b,c}/d'); - * console.log(ast); - * // { type: 'root', - * // errors: [], - * // input: 'a/{b,c}/d', - * // nodes: - * // [ { type: 'bos', val: '' }, - * // { type: 'text', val: 'a/' }, - * // { type: 'brace', - * // nodes: - * // [ { type: 'brace.open', val: '{' }, - * // { type: 'text', val: 'b,c' }, - * // { type: 'brace.close', val: '}' } ] }, - * // { type: 'text', val: '/d' }, - * // { type: 'eos', val: '' } ] } - * ``` - * @param {String} `str` - * @param {Object} `options` - * @return {Object} Returns an AST - * @api public - */ +/***/ }), -nanomatch.parse = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - function parse() { - var snapdragon = utils.instantiate(null, options); - parsers(snapdragon, options); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bindCallbackInternals; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); +/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); +/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js"); - var ast = snapdragon.parse(pattern, options); - utils.define(ast, 'snapdragon', snapdragon); - ast.input = pattern; - return ast; - } - return memoize('parse', pattern, options, parse); -}; -/** - * Compile the given `ast` or string with the given `options`. - * - * ```js - * var nm = require('nanomatch'); - * nm.compile(ast[, options]); - * - * var ast = nm.parse('a/{b,c}/d'); - * console.log(nm.compile(ast)); - * // { options: { source: 'string' }, - * // state: {}, - * // compilers: - * // { eos: [Function], - * // noop: [Function], - * // bos: [Function], - * // brace: [Function], - * // 'brace.open': [Function], - * // text: [Function], - * // 'brace.close': [Function] }, - * // output: [ 'a/(b|c)/d' ], - * // ast: - * // { ... }, - * // parsingErrors: [] } - * ``` - * @param {Object|String} `ast` - * @param {Object} `options` - * @return {Object} Returns an object that has an `output` property with the compiled string. - * @api public - */ -nanomatch.compile = function(ast, options) { - if (typeof ast === 'string') { - ast = nanomatch.parse(ast, options); - } - function compile() { - var snapdragon = utils.instantiate(ast, options); - compilers(snapdragon, options); - return snapdragon.compile(ast, options); - } - return memoize('compile', ast.input, options, compile); -}; -/** - * Clear the regex cache. - * - * ```js - * nm.clearCache(); - * ``` - * @api public - */ - -nanomatch.clearCache = function() { - nanomatch.cache.__data__ = {}; -}; - -/** - * Compose a matcher function with the given patterns. - * This allows matcher functions to be compiled once and - * called multiple times. - */ - -function compose(patterns, options, matcher) { - var matchers; - - return memoize('compose', String(patterns), options, function() { - return function(file) { - // delay composition until it's invoked the first time, - // after that it won't be called again - if (!matchers) { - matchers = []; - for (var i = 0; i < patterns.length; i++) { - matchers.push(matcher(patterns[i], options)); +function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) { + if (resultSelector) { + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__[/* isScheduler */ "a"])(resultSelector)) { + scheduler = resultSelector; } - } - - var len = matchers.length; - while (len--) { - if (matchers[len](file) === true) { - return true; + else { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler) + .apply(this, args) + .pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__[/* mapOneOrManyArgs */ "a"])(resultSelector)); + }; } - } - return false; + } + if (scheduler) { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return bindCallbackInternals(isNodeStyle, callbackFunc) + .apply(this, args) + .pipe(Object(_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_3__[/* subscribeOn */ "a"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_5__[/* observeOn */ "a"])(scheduler)); + }; + } + return function () { + var _this = this; + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_6__[/* AsyncSubject */ "a"](); + var uninitialized = true; + return new _Observable__WEBPACK_IMPORTED_MODULE_2__[/* Observable */ "a"](function (subscriber) { + var subs = subject.subscribe(subscriber); + if (uninitialized) { + uninitialized = false; + var isAsync_1 = false; + var isComplete_1 = false; + callbackFunc.apply(_this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args)), [ + function () { + var results = []; + for (var _i = 0; _i < arguments.length; _i++) { + results[_i] = arguments[_i]; + } + if (isNodeStyle) { + var err = results.shift(); + if (err != null) { + subject.error(err); + return; + } + } + subject.next(1 < results.length ? results : results[0]); + isComplete_1 = true; + if (isAsync_1) { + subject.complete(); + } + }, + ])); + if (isComplete_1) { + subject.complete(); + } + isAsync_1 = true; + } + return subs; + }); }; - }); } +//# sourceMappingURL=bindCallbackInternals.js.map -/** - * Memoize a generated regex or function. A unique key is generated - * from the `type` (usually method name), the `pattern`, and - * user-defined options. - */ - -function memoize(type, pattern, options, fn) { - var key = utils.createKey(type + '=' + pattern, options); +/***/ }), - if (options && options.cache === false) { - return fn(pattern, options); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/bindNodeCallback.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (cache.has(type, key)) { - return cache.get(type, key); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bindNodeCallback; }); +/* harmony import */ var _bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js"); - var val = fn(pattern, options); - cache.set(type, key, val); - return val; +function bindNodeCallback(callbackFunc, resultSelector, scheduler) { + return Object(_bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__[/* bindCallbackInternals */ "a"])(true, callbackFunc, resultSelector, scheduler); } +//# sourceMappingURL=bindNodeCallback.js.map -/** - * Expose compiler, parser and cache on `nanomatch` - */ - -nanomatch.compilers = compilers; -nanomatch.parsers = parsers; -nanomatch.cache = cache; - -/** - * Expose `nanomatch` - * @type {Function} - */ - -module.exports = nanomatch; +/***/ }), +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/***/ }), +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineLatest; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return combineLatestInit; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js"); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); +/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _util_createObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createObject.js"); +/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); -/***/ "../../node_modules/nanomatch/lib/cache.js": -/***/ (function(module, exports, __webpack_require__) { -module.exports = new (__webpack_require__("../../node_modules/fragment-cache/index.js"))(); -/***/ }), -/***/ "../../node_modules/nanomatch/lib/compilers.js": -/***/ (function(module, exports, __webpack_require__) { -"use strict"; -/** -* Nanomatch compilers -*/ -module.exports = function(nanomatch, options) { - function slash() { - if (options && typeof options.slash === 'string') { - return options.slash; +function combineLatest() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; } - if (options && typeof options.slash === 'function') { - return options.slash.call(nanomatch); + var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_5__[/* popScheduler */ "c"])(args); + var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_5__[/* popResultSelector */ "b"])(args); + var _a = Object(_util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__[/* argsArgArrayOrObject */ "a"])(args), observables = _a.args, keys = _a.keys; + if (observables.length === 0) { + return Object(_from__WEBPACK_IMPORTED_MODULE_2__[/* from */ "a"])([], scheduler); } - return '\\\\/'; - } - - function star() { - if (options && typeof options.star === 'string') { - return options.star; + var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](combineLatestInit(observables, scheduler, keys + ? + function (values) { return Object(_util_createObject__WEBPACK_IMPORTED_MODULE_6__[/* createObject */ "a"])(keys, values); } + : + _util_identity__WEBPACK_IMPORTED_MODULE_3__[/* identity */ "a"])); + return resultSelector ? result.pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__[/* mapOneOrManyArgs */ "a"])(resultSelector)) : result; +} +function combineLatestInit(observables, scheduler, valueTransform) { + if (valueTransform === void 0) { valueTransform = _util_identity__WEBPACK_IMPORTED_MODULE_3__[/* identity */ "a"]; } + return function (subscriber) { + maybeSchedule(scheduler, function () { + var length = observables.length; + var values = new Array(length); + var active = length; + var remainingFirstValues = length; + var _loop_1 = function (i) { + maybeSchedule(scheduler, function () { + var source = Object(_from__WEBPACK_IMPORTED_MODULE_2__[/* from */ "a"])(observables[i], scheduler); + var hasFirstValue = false; + source.subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_7__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + values[i] = value; + if (!hasFirstValue) { + hasFirstValue = true; + remainingFirstValues--; + } + if (!remainingFirstValues) { + subscriber.next(valueTransform(values.slice())); + } + }, function () { + if (!--active) { + subscriber.complete(); + } + })); + }, subscriber); + }; + for (var i = 0; i < length; i++) { + _loop_1(i); + } + }, subscriber); + }; +} +function maybeSchedule(scheduler, execute, subscription) { + if (scheduler) { + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_8__[/* executeSchedule */ "a"])(subscription, scheduler, execute); } - if (options && typeof options.star === 'function') { - return options.star.call(nanomatch); + else { + execute(); } - return '[^' + slash() + ']*?'; - } - - var ast = nanomatch.ast = nanomatch.parser.ast; - ast.state = nanomatch.parser.state; - nanomatch.compiler.state = ast.state; - nanomatch.compiler - - /** - * Negation / escaping - */ - - .set('not', function(node) { - var prev = this.prev(); - if (this.options.nonegate === true || prev.type !== 'bos') { - return this.emit('\\' + node.val, node); - } - return this.emit(node.val, node); - }) - .set('escape', function(node) { - if (this.options.unescape && /^[-\w_.]/.test(node.val)) { - return this.emit(node.val, node); - } - return this.emit('\\' + node.val, node); - }) - .set('quoted', function(node) { - return this.emit(node.val, node); - }) - - /** - * Regex - */ - - .set('dollar', function(node) { - if (node.parent.type === 'bracket') { - return this.emit(node.val, node); - } - return this.emit('\\' + node.val, node); - }) +} +//# sourceMappingURL=combineLatest.js.map - /** - * Dot: "." - */ +/***/ }), - .set('dot', function(node) { - if (node.dotfiles === true) this.dotfiles = true; - return this.emit('\\' + node.val, node); - }) +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/concat.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - /** - * Slashes: "/" and "\" - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concat; }); +/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); - .set('backslash', function(node) { - return this.emit(node.val, node); - }) - .set('slash', function(node, nodes, i) { - var val = '[' + slash() + ']'; - var parent = node.parent; - var prev = this.prev(); - - // set "node.hasSlash" to true on all ancestor parens nodes - while (parent.type === 'paren' && !parent.hasSlash) { - parent.hasSlash = true; - parent = parent.parent; - } - if (prev.addQmark) { - val += '?'; - } - // word boundary - if (node.rest.slice(0, 2) === '\\b') { - return this.emit(val, node); - } +function concat() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return Object(_operators_concatAll__WEBPACK_IMPORTED_MODULE_0__[/* concatAll */ "a"])()(Object(_from__WEBPACK_IMPORTED_MODULE_2__[/* from */ "a"])(args, Object(_util_args__WEBPACK_IMPORTED_MODULE_1__[/* popScheduler */ "c"])(args))); +} +//# sourceMappingURL=concat.js.map - // globstars - if (node.parsed === '**' || node.parsed === './**') { - this.output = '(?:' + this.output; - return this.emit(val + ')?', node); - } +/***/ }), - // negation - if (node.parsed === '!**' && this.options.nonegate !== true) { - return this.emit(val + '?\\b', node); - } - return this.emit(val, node); - }) +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/connectable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - /** - * Square brackets - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return connectable; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/defer.js"); - .set('bracket', function(node) { - var close = node.close; - var open = !node.escaped ? '[' : '\\['; - var negated = node.negated; - var inner = node.inner; - var val = node.val; - if (node.escaped === true) { - inner = inner.replace(/\\?(\W)/g, '\\$1'); - negated = ''; - } - if (inner === ']-') { - inner = '\\]\\-'; - } +var DEFAULT_CONFIG = { + connector: function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); }, + resetOnDisconnect: true, +}; +function connectable(source, config) { + if (config === void 0) { config = DEFAULT_CONFIG; } + var connection = null; + var connector = config.connector, _a = config.resetOnDisconnect, resetOnDisconnect = _a === void 0 ? true : _a; + var subject = connector(); + var result = new _Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"](function (subscriber) { + return subject.subscribe(subscriber); + }); + result.connect = function () { + if (!connection || connection.closed) { + connection = Object(_defer__WEBPACK_IMPORTED_MODULE_2__[/* defer */ "a"])(function () { return source; }).subscribe(subject); + if (resetOnDisconnect) { + connection.add(function () { return (subject = connector()); }); + } + } + return connection; + }; + return result; +} +//# sourceMappingURL=connectable.js.map - if (negated && inner.indexOf('.') === -1) { - inner += '.'; - } - if (negated && inner.indexOf('/') === -1) { - inner += '/'; - } +/***/ }), - val = open + negated + inner + close; - return this.emit(val, node); - }) +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/defer.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - /** - * Square: "[.]" (only matches a single character in brackets) - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return defer; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - .set('square', function(node) { - var val = (/^\W/.test(node.val) ? '\\' : '') + node.val; - return this.emit(val, node); - }) - /** - * Question mark: "?" - */ +function defer(observableFactory) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(observableFactory()).subscribe(subscriber); + }); +} +//# sourceMappingURL=defer.js.map - .set('qmark', function(node) { - var prev = this.prev(); - // don't use "slash" variable so that we always avoid - // matching backslashes and slashes with a qmark - var val = '[^.\\\\/]'; - if (this.options.dot || (prev.type !== 'bos' && prev.type !== 'slash')) { - val = '[^\\\\/]'; - } +/***/ }), - if (node.parsed.slice(-1) === '(') { - var ch = node.rest.charAt(0); - if (ch === '!' || ch === '=' || ch === ':') { - return this.emit(node.val, node); - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (node.val.length > 1) { - val += '{' + node.val.length + '}'; - } - return this.emit(val, node); - }) +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return animationFrames; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _scheduler_performanceTimestampProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js"); +/* harmony import */ var _scheduler_animationFrameProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js"); - /** - * Plus - */ - .set('plus', function(node) { - var prev = node.parsed.slice(-1); - if (prev === ']' || prev === ')') { - return this.emit(node.val, node); - } - if (!this.output || (/[?*+]/.test(ch) && node.parent.type !== 'bracket')) { - return this.emit('\\+', node); - } - var ch = this.output.slice(-1); - if (/\w/.test(ch) && !node.inside) { - return this.emit('+\\+?', node); - } - return this.emit('+', node); - }) - /** - * globstar: '**' - */ - .set('globstar', function(node, nodes, i) { - if (!this.output) { - this.state.leadingGlobstar = true; - } +function animationFrames(timestampProvider) { + return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES; +} +function animationFramesFactory(timestampProvider) { + var schedule = _scheduler_animationFrameProvider__WEBPACK_IMPORTED_MODULE_3__[/* animationFrameProvider */ "a"].schedule; + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"](); + var provider = timestampProvider || _scheduler_performanceTimestampProvider__WEBPACK_IMPORTED_MODULE_2__[/* performanceTimestampProvider */ "a"]; + var start = provider.now(); + var run = function (timestamp) { + var now = provider.now(); + subscriber.next({ + timestamp: timestampProvider ? now : timestamp, + elapsed: now - start, + }); + if (!subscriber.closed) { + subscription.add(schedule(run)); + } + }; + subscription.add(schedule(run)); + return subscription; + }); +} +var DEFAULT_ANIMATION_FRAMES = animationFramesFactory(); +//# sourceMappingURL=animationFrames.js.map - var prev = this.prev(); - var before = this.prev(2); - var next = this.next(); - var after = this.next(2); - var type = prev.type; - var val = node.val; +/***/ }), - if (prev.type === 'slash' && next.type === 'slash') { - if (before.type === 'text') { - this.output += '?'; +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/empty.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (after.type !== 'text') { - this.output += '\\b'; - } - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EMPTY; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return empty; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); - var parsed = node.parsed; - if (parsed.charAt(0) === '!') { - parsed = parsed.slice(1); - } +var EMPTY = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { return subscriber.complete(); }); +function empty(scheduler) { + return scheduler ? emptyScheduled(scheduler) : EMPTY; +} +function emptyScheduled(scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); }); +} +//# sourceMappingURL=empty.js.map - var isInside = node.isInside.paren || node.isInside.brace; - if (parsed && type !== 'slash' && type !== 'bos' && !isInside) { - val = star(); - } else { - val = this.options.dot !== true - ? '(?:(?!(?:[' + slash() + ']|^)\\.).)*?' - : '(?:(?!(?:[' + slash() + ']|^)(?:\\.{1,2})($|[' + slash() + ']))(?!\\.{2}).)*?'; - } +/***/ }), - if ((type === 'slash' || type === 'bos') && this.options.dot !== true) { - val = '(?!\\.)' + val; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (prev.type === 'slash' && next.type === 'slash' && before.type !== 'text') { - if (after.type === 'text' || after.type === 'star') { - node.addQmark = true; - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return forkJoin; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js"); +/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); +/* harmony import */ var _util_createObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createObject.js"); - if (this.options.capture) { - val = '(' + val + ')'; - } - return this.emit(val, node); - }) - /** - * Star: "*" - */ - .set('star', function(node, nodes, i) { - var prior = nodes[i - 2] || {}; - var prev = this.prev(); - var next = this.next(); - var type = prev.type; - function isStart(n) { - return n.type === 'bos' || n.type === 'slash'; - } - if (this.output === '' && this.options.contains !== true) { - this.output = '(?![' + slash() + '])'; - } - if (type === 'bracket' && this.options.bash === false) { - var str = next && next.type === 'bracket' ? star() : '*?'; - if (!prev.nodes || prev.nodes[1].type !== 'posix') { - return this.emit(str, node); +function forkJoin() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__[/* popResultSelector */ "b"])(args); + var _a = Object(_util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__[/* argsArgArrayOrObject */ "a"])(args), sources = _a.args, keys = _a.keys; + var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + var length = sources.length; + if (!length) { + subscriber.complete(); + return; } - } - - var prefix = !this.dotfiles && type !== 'text' && type !== 'escape' - ? (this.options.dot ? '(?!(?:^|[' + slash() + '])\\.{1,2}(?:$|[' + slash() + ']))' : '(?!\\.)') - : ''; - - if (isStart(prev) || (isStart(prior) && type === 'not')) { - if (prefix !== '(?!\\.)') { - prefix += '(?!(\\.{2}|\\.[' + slash() + ']))(?=.)'; - } else { - prefix += '(?=.)'; + var values = new Array(length); + var remainingCompletions = length; + var remainingEmissions = length; + var _loop_1 = function (sourceIndex) { + var hasValue = false; + Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(sources[sourceIndex]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + if (!hasValue) { + hasValue = true; + remainingEmissions--; + } + values[sourceIndex] = value; + }, function () { return remainingCompletions--; }, undefined, function () { + if (!remainingCompletions || !hasValue) { + if (!remainingEmissions) { + subscriber.next(keys ? Object(_util_createObject__WEBPACK_IMPORTED_MODULE_6__[/* createObject */ "a"])(keys, values) : values); + } + subscriber.complete(); + } + })); + }; + for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) { + _loop_1(sourceIndex); } - } else if (prefix === '(?!\\.)') { - prefix = ''; - } - - if (prev.type === 'not' && prior.type === 'bos' && this.options.dot === true) { - this.output = '(?!\\.)' + this.output; - } - - var output = prefix + star(); - if (this.options.capture) { - output = '(' + output + ')'; - } - - return this.emit(output, node); - }) - - /** - * Text - */ - - .set('text', function(node) { - return this.emit(node.val, node); - }) - - /** - * End-of-string - */ - - .set('eos', function(node) { - var prev = this.prev(); - var val = node.val; - - this.output = '(?:\\.[' + slash() + '](?=.))?' + this.output; - if (this.state.metachar && prev.type !== 'qmark' && prev.type !== 'slash') { - val += (this.options.contains ? '[' + slash() + ']?' : '(?:[' + slash() + ']|$)'); - } - - return this.emit(val, node); }); - - /** - * Allow custom compilers to be passed on options - */ - - if (options && typeof options.compilers === 'function') { - options.compilers(nanomatch.compiler); - } -}; - - + return resultSelector ? result.pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_5__[/* mapOneOrManyArgs */ "a"])(resultSelector)) : result; +} +//# sourceMappingURL=forkJoin.js.map /***/ }), -/***/ "../../node_modules/nanomatch/lib/parsers.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/from.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return from; }); +/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js"); +/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -var regexNot = __webpack_require__("../../node_modules/regex-not/index.js"); -var toRegex = __webpack_require__("../../node_modules/to-regex/index.js"); -var isOdd = __webpack_require__("../../node_modules/is-odd/index.js"); - -/** - * Characters to use in negation regex (we want to "not" match - * characters that are matched by other parsers) - */ - -var cached; -var NOT_REGEX = '[\\[!*+?$^"\'.\\\\/]+'; -var not = createTextRegex(NOT_REGEX); - -/** - * Nanomatch parsers - */ - -module.exports = function(nanomatch, options) { - var parser = nanomatch.parser; - var opts = parser.options; - - parser.state = { - slashes: 0, - paths: [] - }; - - parser.ast.state = parser.state; - parser - - /** - * Beginning-of-string - */ - - .capture('prefix', function() { - if (this.parsed) return; - var m = this.match(/^\.[\\/]/); - if (!m) return; - this.state.strictOpen = !!this.options.strictOpen; - this.state.addPrefix = true; - }) - - /** - * Escape: "\\." - */ - - .capture('escape', function() { - if (this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(/^(?:\\(.)|([$^]))/); - if (!m) return; - - return pos({ - type: 'escape', - val: m[2] || m[1] - }); - }) - - /** - * Quoted strings - */ - - .capture('quoted', function() { - var pos = this.position(); - var m = this.match(/^["']/); - if (!m) return; - - var quote = m[0]; - if (this.input.indexOf(quote) === -1) { - return pos({ - type: 'escape', - val: quote - }); - } - - var tok = advanceTo(this.input, quote); - this.consume(tok.len); +function from(input, scheduler) { + return scheduler ? Object(_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_0__[/* scheduled */ "a"])(input, scheduler) : Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(input); +} +//# sourceMappingURL=from.js.map - return pos({ - type: 'quoted', - val: tok.esc - }); - }) +/***/ }), - /** - * Negations: "!" - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - .capture('not', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(this.notRegex || /^!+/); - if (!m) return; - var val = m[0]; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return fromEvent; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _operators_mergeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); +/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); - var isNegated = isOdd(val.length); - if (parsed === '' && !isNegated) { - val = ''; - } - // if nothing has been parsed, we know `!` is at the start, - // so we need to wrap the result in a negation regex - if (parsed === '' && isNegated && this.options.nonegate !== true) { - this.bos.val = '(?!^(?:'; - this.append = ')$).*'; - val = ''; - } - return pos({ - type: 'not', - val: val - }); - }) - /** - * Dot: "." - */ - .capture('dot', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\.+/); - if (!m) return; - var val = m[0]; - this.state.dot = val === '.' && (parsed === '' || parsed.slice(-1) === '/'); - return pos({ - type: 'dot', - dotfiles: this.state.dot, - val: val - }); - }) - /** - * Plus: "+" - */ +var nodeEventEmitterMethods = ['addListener', 'removeListener']; +var eventTargetMethods = ['addEventListener', 'removeEventListener']; +var jqueryMethods = ['on', 'off']; +function fromEvent(target, eventName, options, resultSelector) { + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(options)) { + resultSelector = options; + options = undefined; + } + if (resultSelector) { + return fromEvent(target, eventName, options).pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__[/* mapOneOrManyArgs */ "a"])(resultSelector)); + } + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(isEventTarget(target) + ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; }) + : + isNodeStyleEventEmitter(target) + ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) + : isJQueryStyleEventEmitter(target) + ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) + : [], 2), add = _a[0], remove = _a[1]; + if (!add) { + if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_4__[/* isArrayLike */ "a"])(target)) { + return Object(_operators_mergeMap__WEBPACK_IMPORTED_MODULE_3__[/* mergeMap */ "a"])(function (subTarget) { return fromEvent(subTarget, eventName, options); })(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(target)); + } + } + if (!add) { + throw new TypeError('Invalid event target'); + } + return new _Observable__WEBPACK_IMPORTED_MODULE_2__[/* Observable */ "a"](function (subscriber) { + var handler = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return subscriber.next(1 < args.length ? args : args[0]); + }; + add(handler); + return function () { return remove(handler); }; + }); +} +function toCommonHandlerRegistry(target, eventName) { + return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; }; +} +function isNodeStyleEventEmitter(target) { + return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.addListener) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.removeListener); +} +function isJQueryStyleEventEmitter(target) { + return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.on) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.off); +} +function isEventTarget(target) { + return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.addEventListener) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.removeEventListener); +} +//# sourceMappingURL=fromEvent.js.map - .capture('plus', /^\+(?!\()/) +/***/ }), - /** - * Question mark: "?" - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - .capture('qmark', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\?+(?!\()/); - if (!m) return; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return fromEventPattern; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); - this.state.metachar = true; - this.state.qmark = true; - return pos({ - type: 'qmark', - parsed: parsed, - val: m[0] - }); - }) - /** - * Globstar: "**" - */ +function fromEventPattern(addHandler, removeHandler, resultSelector) { + if (resultSelector) { + return fromEventPattern(addHandler, removeHandler).pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_2__[/* mapOneOrManyArgs */ "a"])(resultSelector)); + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + var handler = function () { + var e = []; + for (var _i = 0; _i < arguments.length; _i++) { + e[_i] = arguments[_i]; + } + return subscriber.next(e.length === 1 ? e[0] : e); + }; + var retValue = addHandler(handler); + return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined; + }); +} +//# sourceMappingURL=fromEventPattern.js.map - .capture('globstar', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(/^\*{2}(?![*(])(?=[,)/]|$)/); - if (!m) return; +/***/ }), - var type = opts.noglobstar !== true ? 'globstar' : 'star'; - var node = pos({type: type, parsed: parsed}); - this.state.metachar = true; +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/fromSubscribable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - while (this.input.slice(0, 4) === '/**/') { - this.input = this.input.slice(3); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return fromSubscribable; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); - node.isInside = { - brace: this.isInside('brace'), - paren: this.isInside('paren') - }; +function fromSubscribable(subscribable) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { return subscribable.subscribe(subscriber); }); +} +//# sourceMappingURL=fromSubscribable.js.map - if (type === 'globstar') { - this.state.globstar = true; - node.val = '**'; +/***/ }), - } else { - this.state.star = true; - node.val = '*'; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/generate.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return node; - }) +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return generate; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js"); +/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/defer.js"); +/* harmony import */ var _scheduled_scheduleIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js"); - /** - * Star: "*" - */ - .capture('star', function() { - var pos = this.position(); - var starRe = /^(?:\*(?![*(])|[*]{3,}(?!\()|[*]{2}(?![(/]|$)|\*(?=\*\())/; - var m = this.match(starRe); - if (!m) return; - - this.state.metachar = true; - this.state.star = true; - return pos({ - type: 'star', - val: m[0] - }); - }) - /** - * Slash: "/" - */ - .capture('slash', function() { - var pos = this.position(); - var m = this.match(/^\//); - if (!m) return; - this.state.slashes++; - return pos({ - type: 'slash', - val: m[0] - }); - }) +function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) { + var _a, _b; + var resultSelector; + var initialState; + if (arguments.length === 1) { + (_a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? _util_identity__WEBPACK_IMPORTED_MODULE_1__[/* identity */ "a"] : _b, scheduler = _a.scheduler); + } + else { + initialState = initialStateOrOptions; + if (!resultSelectorOrScheduler || Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__[/* isScheduler */ "a"])(resultSelectorOrScheduler)) { + resultSelector = _util_identity__WEBPACK_IMPORTED_MODULE_1__[/* identity */ "a"]; + scheduler = resultSelectorOrScheduler; + } + else { + resultSelector = resultSelectorOrScheduler; + } + } + function gen() { + var state; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "f"])(this, function (_a) { + switch (_a.label) { + case 0: + state = initialState; + _a.label = 1; + case 1: + if (!(!condition || condition(state))) return [3, 4]; + return [4, resultSelector(state)]; + case 2: + _a.sent(); + _a.label = 3; + case 3: + state = iterate(state); + return [3, 1]; + case 4: return [2]; + } + }); + } + return Object(_defer__WEBPACK_IMPORTED_MODULE_3__[/* defer */ "a"])((scheduler + ? + function () { return Object(_scheduled_scheduleIterable__WEBPACK_IMPORTED_MODULE_4__[/* scheduleIterable */ "a"])(gen(), scheduler); } + : + gen)); +} +//# sourceMappingURL=generate.js.map - /** - * Backslash: "\\" - */ +/***/ }), - .capture('backslash', function() { - var pos = this.position(); - var m = this.match(/^\\(?![*+?(){}[\]'"])/); - if (!m) return; +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/iif.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var val = m[0]; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return iif; }); +/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/defer.js"); - if (this.isInside('bracket')) { - val = '\\'; - } else if (val.length > 1) { - val = '\\\\'; - } +function iif(condition, trueResult, falseResult) { + return Object(_defer__WEBPACK_IMPORTED_MODULE_0__[/* defer */ "a"])(function () { return (condition() ? trueResult : falseResult); }); +} +//# sourceMappingURL=iif.js.map - return pos({ - type: 'backslash', - val: val - }); - }) +/***/ }), - /** - * Square: "[.]" - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - .capture('square', function() { - if (this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(/^\[([^!^\\])\]/); - if (!m) return; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return innerFrom; }); +/* unused harmony export fromInteropObservable */ +/* unused harmony export fromArrayLike */ +/* unused harmony export fromPromise */ +/* unused harmony export fromIterable */ +/* unused harmony export fromAsyncIterable */ +/* unused harmony export fromReadableStreamLike */ +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js"); +/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js"); +/* harmony import */ var _util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js"); +/* harmony import */ var _util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js"); +/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js"); +/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js"); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js"); - return pos({ - type: 'square', - val: m[1] - }); - }) - /** - * Brackets: "[...]" (basic, this can be overridden by other parsers) - */ - .capture('bracket', function() { - var pos = this.position(); - var m = this.match(/^(?:\[([!^]?)([^\]]+|\]-)(\]|[^*+?]+)|\[)/); - if (!m) return; - var val = m[0]; - var negated = m[1] ? '^' : ''; - var inner = (m[2] || '').replace(/\\\\+/, '\\\\'); - var close = m[3] || ''; - if (m[2] && inner.length < m[2].length) { - val = val.replace(/\\\\+/, '\\\\'); - } - var esc = this.input.slice(0, 2); - if (inner === '' && esc === '\\]') { - inner += esc; - this.consume(2); - var str = this.input; - var idx = -1; - var ch; - while ((ch = str[++idx])) { - this.consume(1); - if (ch === ']') { - close = ch; - break; - } - inner += ch; - } - } - return pos({ - type: 'bracket', - val: val, - escaped: close !== ']', - negated: negated, - inner: inner, - close: close - }); - }) - /** - * Text - */ - .capture('text', function() { - if (this.isInside('bracket')) return; - var pos = this.position(); - var m = this.match(not); - if (!m || !m[0]) return; - return pos({ - type: 'text', - val: m[0] - }); +function innerFrom(input) { + if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"]) { + return input; + } + if (input != null) { + if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__[/* isInteropObservable */ "a"])(input)) { + return fromInteropObservable(input); + } + if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_1__[/* isArrayLike */ "a"])(input)) { + return fromArrayLike(input); + } + if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_2__[/* isPromise */ "a"])(input)) { + return fromPromise(input); + } + if (Object(_util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_5__[/* isAsyncIterable */ "a"])(input)) { + return fromAsyncIterable(input); + } + if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_7__[/* isIterable */ "a"])(input)) { + return fromIterable(input); + } + if (Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_8__[/* isReadableStreamLike */ "a"])(input)) { + return fromReadableStreamLike(input); + } + } + throw Object(_util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_6__[/* createInvalidObservableTypeError */ "a"])(input); +} +function fromInteropObservable(obj) { + return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { + var obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_11__[/* observable */ "a"]](); + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_9__[/* isFunction */ "a"])(obs.subscribe)) { + return obs.subscribe(subscriber); + } + throw new TypeError('Provided object does not correctly implement Symbol.observable'); + }); +} +function fromArrayLike(array) { + return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { + for (var i = 0; i < array.length && !subscriber.closed; i++) { + subscriber.next(array[i]); + } + subscriber.complete(); + }); +} +function fromPromise(promise) { + return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { + promise + .then(function (value) { + if (!subscriber.closed) { + subscriber.next(value); + subscriber.complete(); + } + }, function (err) { return subscriber.error(err); }) + .then(null, _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_10__[/* reportUnhandledError */ "a"]); + }); +} +function fromIterable(iterable) { + return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { + var e_1, _a; + try { + for (var iterable_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) { + var value = iterable_1_1.value; + subscriber.next(value); + if (subscriber.closed) { + return; + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1); + } + finally { if (e_1) throw e_1.error; } + } + subscriber.complete(); + }); +} +function fromAsyncIterable(asyncIterable) { + return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { + process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); }); + }); +} +function fromReadableStreamLike(readableStream) { + return fromAsyncIterable(Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_8__[/* readableStreamLikeToAsyncGenerator */ "b"])(readableStream)); +} +function process(asyncIterable, subscriber) { + var asyncIterable_1, asyncIterable_1_1; + var e_2, _a; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "d"])(this, void 0, void 0, function () { + var value, e_2_1; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "f"])(this, function (_b) { + switch (_b.label) { + case 0: + _b.trys.push([0, 5, 6, 11]); + asyncIterable_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __asyncValues */ "b"])(asyncIterable); + _b.label = 1; + case 1: return [4, asyncIterable_1.next()]; + case 2: + if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4]; + value = asyncIterable_1_1.value; + subscriber.next(value); + if (subscriber.closed) { + return [2]; + } + _b.label = 3; + case 3: return [3, 1]; + case 4: return [3, 11]; + case 5: + e_2_1 = _b.sent(); + e_2 = { error: e_2_1 }; + return [3, 11]; + case 6: + _b.trys.push([6, , 9, 10]); + if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8]; + return [4, _a.call(asyncIterable_1)]; + case 7: + _b.sent(); + _b.label = 8; + case 8: return [3, 10]; + case 9: + if (e_2) throw e_2.error; + return [7]; + case 10: return [7]; + case 11: + subscriber.complete(); + return [2]; + } + }); }); +} +//# sourceMappingURL=innerFrom.js.map - /** - * Allow custom parsers to be passed on options - */ +/***/ }), - if (options && typeof options.parsers === 'function') { - options.parsers(nanomatch.parser); - } -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/interval.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Advance to the next non-escaped character - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return interval; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); -function advanceTo(input, endChar) { - var ch = input.charAt(0); - var tok = { len: 1, val: '', esc: '' }; - var idx = 0; - function advance() { - if (ch !== '\\') { - tok.esc += '\\' + ch; - tok.val += ch; +function interval(period, scheduler) { + if (period === void 0) { period = 0; } + if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } + if (period < 0) { + period = 0; } + return Object(_timer__WEBPACK_IMPORTED_MODULE_1__[/* timer */ "a"])(period, period, scheduler); +} +//# sourceMappingURL=interval.js.map - ch = input.charAt(++idx); - tok.len++; +/***/ }), - if (ch === '\\') { - advance(); - advance(); - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/merge.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - while (ch && ch !== endChar) { - advance(); - } - return tok; -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return merge; }); +/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); +/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); -/** - * Create text regex - */ -function createTextRegex(pattern) { - if (cached) return cached; - var opts = {contains: true, strictClose: false}; - var not = regexNot.create(pattern, opts); - var re = toRegex('^(?:[*]\\((?=.)|' + not + ')', opts); - return (cached = re); -} -/** - * Expose negation string - */ -module.exports.not = NOT_REGEX; +function merge() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__[/* popScheduler */ "c"])(args); + var concurrent = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__[/* popNumber */ "a"])(args, Infinity); + var sources = args; + return !sources.length + ? + _empty__WEBPACK_IMPORTED_MODULE_2__[/* EMPTY */ "a"] + : sources.length === 1 + ? + Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(sources[0]) + : + Object(_operators_mergeAll__WEBPACK_IMPORTED_MODULE_0__[/* mergeAll */ "a"])(concurrent)(Object(_from__WEBPACK_IMPORTED_MODULE_4__[/* from */ "a"])(sources, scheduler)); +} +//# sourceMappingURL=merge.js.map /***/ }), -/***/ "../../node_modules/nanomatch/lib/utils.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/never.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NEVER; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return never; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -var utils = module.exports; -var path = __webpack_require__("path"); - -/** - * Module dependencies - */ - -var isWindows = __webpack_require__("../../node_modules/is-windows/index.js")(); -var Snapdragon = __webpack_require__("../../node_modules/snapdragon/index.js"); -utils.define = __webpack_require__("../../node_modules/nanomatch/node_modules/define-property/index.js"); -utils.diff = __webpack_require__("../../node_modules/arr-diff/index.js"); -utils.extend = __webpack_require__("../../node_modules/nanomatch/node_modules/extend-shallow/index.js"); -utils.pick = __webpack_require__("../../node_modules/object.pick/index.js"); -utils.typeOf = __webpack_require__("../../node_modules/kind-of/index.js"); -utils.unique = __webpack_require__("../../node_modules/array-unique/index.js"); +var NEVER = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](_util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"]); +function never() { + return NEVER; +} +//# sourceMappingURL=never.js.map -/** - * Returns true if the given value is effectively an empty string - */ +/***/ }), -utils.isEmptyString = function(val) { - return String(val) === '' || String(val) === './'; -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/of.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Returns true if the platform is windows, or `path.sep` is `\\`. - * This is defined as a function to allow `path.sep` to be set in unit tests, - * or by the user, if there is a reason to do so. - * @return {Boolean} - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return of; }); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); -utils.isWindows = function() { - return path.sep === '\\' || isWindows === true; -}; -/** - * Return the last element from an array - */ +function of() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_0__[/* popScheduler */ "c"])(args); + return Object(_from__WEBPACK_IMPORTED_MODULE_1__[/* from */ "a"])(args, scheduler); +} +//# sourceMappingURL=of.js.map -utils.last = function(arr, n) { - return arr[arr.length - (n || 1)]; -}; +/***/ }), -/** - * Get the `Snapdragon` instance to use - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/onErrorResumeNext.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -utils.instantiate = function(ast, options) { - var snapdragon; - // if an instance was created by `.parse`, use that instance - if (utils.typeOf(ast) === 'object' && ast.snapdragon) { - snapdragon = ast.snapdragon; - // if the user supplies an instance on options, use that instance - } else if (utils.typeOf(options) === 'object' && options.snapdragon) { - snapdragon = options.snapdragon; - // create a new instance - } else { - snapdragon = new Snapdragon(options); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return onErrorResumeNext; }); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); +/* harmony import */ var _operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js"); +/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); - utils.define(snapdragon, 'parse', function(str, options) { - var parsed = Snapdragon.prototype.parse.call(this, str, options); - parsed.input = str; - // escape unmatched brace/bracket/parens - var last = this.parser.stack.pop(); - if (last && this.options.strictErrors !== true) { - var open = last.nodes[0]; - var inner = last.nodes[1]; - if (last.type === 'bracket') { - if (inner.val.charAt(0) === '[') { - inner.val = '\\' + inner.val; - } - } else { - open.val = '\\' + open.val; - var sibling = open.parent.nodes[1]; - if (sibling.type === 'star') { - sibling.loose = true; - } - } +function onErrorResumeNext() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; } + return Object(_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_1__[/* onErrorResumeNext */ "a"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__[/* argsOrArgArray */ "a"])(sources))(_empty__WEBPACK_IMPORTED_MODULE_0__[/* EMPTY */ "a"]); +} +//# sourceMappingURL=onErrorResumeNext.js.map - // add non-enumerable parser reference - utils.define(parsed, 'parser', this.parser); - return parsed; - }); - - return snapdragon; -}; +/***/ }), -/** - * Create the key to use for memoization. The key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/pairs.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -utils.createKey = function(pattern, options) { - if (typeof options === 'undefined') { - return pattern; - } - var key = pattern; - for (var prop in options) { - if (options.hasOwnProperty(prop)) { - key += ';' + prop + '=' + String(options[prop]); - } - } - return key; -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pairs; }); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); -/** - * Cast `val` to an array - * @return {Array} - */ +function pairs(obj, scheduler) { + return Object(_from__WEBPACK_IMPORTED_MODULE_0__[/* from */ "a"])(Object.entries(obj), scheduler); +} +//# sourceMappingURL=pairs.js.map -utils.arrayify = function(val) { - if (typeof val === 'string') return [val]; - return val ? (Array.isArray(val) ? val : [val]) : []; -}; +/***/ }), -/** - * Return true if `val` is a non-empty string - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/partition.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -utils.isString = function(val) { - return typeof val === 'string'; -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return partition; }); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/not.js"); +/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); +/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/** - * Return true if `val` is a non-empty string - */ -utils.isRegex = function(val) { - return utils.typeOf(val) === 'regexp'; -}; -/** - * Return true if `val` is a non-empty string - */ +function partition(source, predicate, thisArg) { + return [Object(_operators_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(predicate, thisArg)(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(source)), Object(_operators_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__[/* not */ "a"])(predicate, thisArg))(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(source))]; +} +//# sourceMappingURL=partition.js.map -utils.isObject = function(val) { - return utils.typeOf(val) === 'object'; -}; +/***/ }), -/** - * Escape regex characters in the given string - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/race.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -utils.escapeRegex = function(str) { - return str.replace(/[-[\]{}()^$|*+?.\\/\s]/g, '\\$&'); -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return race; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return raceInit; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); +/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/** - * Combines duplicate characters in the provided `input` string. - * @param {String} `input` - * @returns {String} - */ -utils.combineDupes = function(input, patterns) { - patterns = utils.arrayify(patterns).join('|').split('|'); - patterns = patterns.map(function(s) { - return s.replace(/\\?([+*\\/])/g, '\\$1'); - }); - var substr = patterns.join('|'); - var regex = new RegExp('(' + substr + ')(?=\\1)', 'g'); - return input.replace(regex, ''); -}; -/** - * Returns true if the given `str` has special characters - */ -utils.hasSpecialChars = function(str) { - return /(?:(?:(^|\/)[!.])|[*?+()|[\]{}]|[+@]\()/.test(str); -}; +function race() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + sources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__[/* argsOrArgArray */ "a"])(sources); + return sources.length === 1 ? Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(sources[0]) : new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](raceInit(sources)); +} +function raceInit(sources) { + return function (subscriber) { + var subscriptions = []; + var _loop_1 = function (i) { + subscriptions.push(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(sources[i]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + if (subscriptions) { + for (var s = 0; s < subscriptions.length; s++) { + s !== i && subscriptions[s].unsubscribe(); + } + subscriptions = null; + } + subscriber.next(value); + }))); + }; + for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) { + _loop_1(i); + } + }; +} +//# sourceMappingURL=race.js.map -/** - * Normalize slashes in the given filepath. - * - * @param {String} `filepath` - * @return {String} - */ +/***/ }), -utils.toPosixPath = function(str) { - return str.replace(/\\+/g, '/'); -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/range.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Strip backslashes before special characters in a string. - * - * @param {String} `str` - * @return {String} - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return range; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -utils.unescape = function(str) { - return utils.toPosixPath(str.replace(/\\(?=[*+?!.])/g, '')); -}; -/** - * Strip the drive letter from a windows filepath - * @param {String} `fp` - * @return {String} - */ +function range(start, count, scheduler) { + if (count == null) { + count = start; + start = 0; + } + if (count <= 0) { + return _empty__WEBPACK_IMPORTED_MODULE_1__[/* EMPTY */ "a"]; + } + var end = count + start; + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](scheduler + ? + function (subscriber) { + var n = start; + return scheduler.schedule(function () { + if (n < end) { + subscriber.next(n++); + this.schedule(); + } + else { + subscriber.complete(); + } + }); + } + : + function (subscriber) { + var n = start; + while (n < end && !subscriber.closed) { + subscriber.next(n++); + } + subscriber.complete(); + }); +} +//# sourceMappingURL=range.js.map -utils.stripDrive = function(fp) { - return utils.isWindows() ? fp.replace(/^[a-z]:[\\/]+?/i, '/') : fp; -}; +/***/ }), -/** - * Strip the prefix from a filepath - * @param {String} `fp` - * @return {String} - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/throwError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -utils.stripPrefix = function(str) { - if (str.charAt(0) === '.' && (str.charAt(1) === '/' || str.charAt(1) === '\\')) { - return str.slice(2); - } - return str; -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throwError; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/** - * Returns true if `str` is a common character that doesn't need - * to be processed to be used for matching. - * @param {String} `str` - * @return {Boolean} - */ -utils.isSimpleChar = function(str) { - return str.trim() === '' || str === '.'; -}; +function throwError(errorOrErrorFactory, scheduler) { + var errorFactory = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; }; + var init = function (subscriber) { return subscriber.error(errorFactory()); }; + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init); +} +//# sourceMappingURL=throwError.js.map -/** - * Returns true if the given str is an escaped or - * unescaped path character - */ +/***/ }), -utils.isSlash = function(str) { - return str === '/' || str === '\\/' || str === '\\' || str === '\\\\'; -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/timer.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Returns a function that returns true if the given - * pattern matches or contains a `filepath` - * - * @param {String} `pattern` - * @return {Function} - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timer; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js"); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isDate.js"); -utils.matchPath = function(pattern, options) { - return (options && options.contains) - ? utils.containsPattern(pattern, options) - : utils.equalsPattern(pattern, options); -}; -/** - * Returns true if the given (original) filepath or unixified path are equal - * to the given pattern. - */ -utils._equals = function(filepath, unixPath, pattern) { - return pattern === filepath || pattern === unixPath; -}; -/** - * Returns true if the given (original) filepath or unixified path contain - * the given pattern. - */ +function timer(dueTime, intervalOrScheduler, scheduler) { + if (dueTime === void 0) { dueTime = 0; } + if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__[/* async */ "a"]; } + var intervalDuration = -1; + if (intervalOrScheduler != null) { + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__[/* isScheduler */ "a"])(intervalOrScheduler)) { + scheduler = intervalOrScheduler; + } + else { + intervalDuration = intervalOrScheduler; + } + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + var due = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_3__[/* isValidDate */ "a"])(dueTime) ? +dueTime - scheduler.now() : dueTime; + if (due < 0) { + due = 0; + } + var n = 0; + return scheduler.schedule(function () { + if (!subscriber.closed) { + subscriber.next(n++); + if (0 <= intervalDuration) { + this.schedule(undefined, intervalDuration); + } + else { + subscriber.complete(); + } + } + }, due); + }); +} +//# sourceMappingURL=timer.js.map -utils._contains = function(filepath, unixPath, pattern) { - return filepath.indexOf(pattern) !== -1 || unixPath.indexOf(pattern) !== -1; -}; +/***/ }), -/** - * Returns a function that returns true if the given - * pattern is the same as a given `filepath` - * - * @param {String} `pattern` - * @return {Function} - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/using.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -utils.equalsPattern = function(pattern, options) { - var unixify = utils.unixify(options); - options = options || {}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return using; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); - return function fn(filepath) { - var equal = utils._equals(filepath, unixify(filepath), pattern); - if (equal === true || options.nocase !== true) { - return equal; - } - var lower = filepath.toLowerCase(); - return utils._equals(lower, unixify(lower), pattern); - }; -}; -/** - * Returns a function that returns true if the given - * pattern contains a `filepath` - * - * @param {String} `pattern` - * @return {Function} - */ -utils.containsPattern = function(pattern, options) { - var unixify = utils.unixify(options); - options = options || {}; +function using(resourceFactory, observableFactory) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + var resource = resourceFactory(); + var result = observableFactory(resource); + var source = result ? Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(result) : _empty__WEBPACK_IMPORTED_MODULE_2__[/* EMPTY */ "a"]; + source.subscribe(subscriber); + return function () { + if (resource) { + resource.unsubscribe(); + } + }; + }); +} +//# sourceMappingURL=using.js.map - return function(filepath) { - var contains = utils._contains(filepath, unixify(filepath), pattern); - if (contains === true || options.nocase !== true) { - return contains; - } - var lower = filepath.toLowerCase(); - return utils._contains(lower, unixify(lower), pattern); - }; -}; +/***/ }), -/** - * Returns a function that returns true if the given - * regex matches the `filename` of a file path. - * - * @param {RegExp} `re` Matching regex - * @return {Function} - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/zip.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -utils.matchBasename = function(re) { - return function(filepath) { - return re.test(filepath) || re.test(path.basename(filepath)); - }; -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return zip; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); +/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/** - * Returns the given value unchanced. - * @return {any} - */ -utils.identity = function(val) { - return val; -}; -/** - * Determines the filepath to return based on the provided options. - * @return {any} - */ -utils.value = function(str, unixify, options) { - if (options && options.unixify === false) { - return str; - } - if (options && typeof options.unixify === 'function') { - return options.unixify(str); - } - return unixify(str); -}; -/** - * Returns a function that normalizes slashes in a string to forward - * slashes, strips `./` from beginning of paths, and optionally unescapes - * special characters. - * @return {Function} - */ -utils.unixify = function(options) { - var opts = options || {}; - return function(filepath) { - if (opts.stripPrefix !== false) { - filepath = utils.stripPrefix(filepath); - } - if (opts.unescape === true) { - filepath = utils.unescape(filepath); - } - if (opts.unixify === true || utils.isWindows()) { - filepath = utils.toPosixPath(filepath); - } - return filepath; - }; -}; +function zip() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popResultSelector */ "b"])(args); + var sources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__[/* argsOrArgArray */ "a"])(args); + return sources.length + ? new _Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"](function (subscriber) { + var buffers = sources.map(function () { return []; }); + var completed = sources.map(function () { return false; }); + subscriber.add(function () { + buffers = completed = null; + }); + var _loop_1 = function (sourceIndex) { + Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(sources[sourceIndex]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + buffers[sourceIndex].push(value); + if (buffers.every(function (buffer) { return buffer.length; })) { + var result = buffers.map(function (buffer) { return buffer.shift(); }); + subscriber.next(resultSelector ? resultSelector.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(result))) : result); + if (buffers.some(function (buffer, i) { return !buffer.length && completed[i]; })) { + subscriber.complete(); + } + } + }, function () { + completed[sourceIndex] = true; + !buffers[sourceIndex].length && subscriber.complete(); + })); + }; + for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) { + _loop_1(sourceIndex); + } + return function () { + buffers = completed = null; + }; + }) + : _empty__WEBPACK_IMPORTED_MODULE_4__[/* EMPTY */ "a"]; +} +//# sourceMappingURL=zip.js.map /***/ }), -/***/ "../../node_modules/nanomatch/node_modules/define-property/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/*! - * define-property - * - * Copyright (c) 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isobject = __webpack_require__("../../node_modules/isobject/index.js"); -var isDescriptor = __webpack_require__("../../node_modules/is-descriptor/index.js"); -var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) - ? Reflect.defineProperty - : Object.defineProperty; - -module.exports = function defineProperty(obj, key, val) { - if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) { - throw new TypeError('expected an object, function, or array'); - } - - if (typeof key !== 'string') { - throw new TypeError('expected "key" to be a string'); - } - - if (isDescriptor(val)) { - define(obj, key, val); - return obj; - } +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return createOperatorSubscriber; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OperatorSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); - define(obj, key, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); - return obj; -}; +function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { + return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); +} +var OperatorSubscriber = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(OperatorSubscriber, _super); + function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { + var _this = _super.call(this, destination) || this; + _this.onFinalize = onFinalize; + _this.shouldUnsubscribe = shouldUnsubscribe; + _this._next = onNext + ? function (value) { + try { + onNext(value); + } + catch (err) { + destination.error(err); + } + } + : _super.prototype._next; + _this._error = onError + ? function (err) { + try { + onError(err); + } + catch (err) { + destination.error(err); + } + finally { + this.unsubscribe(); + } + } + : _super.prototype._error; + _this._complete = onComplete + ? function () { + try { + onComplete(); + } + catch (err) { + destination.error(err); + } + finally { + this.unsubscribe(); + } + } + : _super.prototype._complete; + return _this; + } + OperatorSubscriber.prototype.unsubscribe = function () { + var _a; + if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { + var closed_1 = this.closed; + _super.prototype.unsubscribe.call(this); + !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); + } + }; + return OperatorSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[/* Subscriber */ "b"])); +//# sourceMappingURL=OperatorSubscriber.js.map /***/ }), -/***/ "../../node_modules/nanomatch/node_modules/extend-shallow/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/audit.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return audit; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -var isExtendable = __webpack_require__("../../node_modules/nanomatch/node_modules/is-extendable/index.js"); -var assignSymbols = __webpack_require__("../../node_modules/assign-symbols/index.js"); - -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } +function audit(durationSelector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var hasValue = false; + var lastValue = null; + var durationSubscriber = null; + var isComplete = false; + var endDuration = function () { + durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); + durationSubscriber = null; + if (hasValue) { + hasValue = false; + var value = lastValue; + lastValue = null; + subscriber.next(value); + } + isComplete && subscriber.complete(); + }; + var cleanupDuration = function () { + durationSubscriber = null; + isComplete && subscriber.complete(); + }; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + hasValue = true; + lastValue = value; + if (!durationSubscriber) { + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(durationSelector(value)).subscribe((durationSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, endDuration, cleanupDuration))); + } + }, function () { + isComplete = true; + (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete(); + })); + }); } +//# sourceMappingURL=audit.js.map -function isString(val) { - return (val && typeof val === 'string'); -} +/***/ }), -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/auditTime.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return auditTime; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/audit.js"); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); -/** - * Returns true if the given `key` is an own property of `obj`. - */ -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); +function auditTime(duration, scheduler) { + if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } + return Object(_audit__WEBPACK_IMPORTED_MODULE_1__[/* audit */ "a"])(function () { return Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__[/* timer */ "a"])(duration, scheduler); }); } - +//# sourceMappingURL=auditTime.js.map /***/ }), -/***/ "../../node_modules/nanomatch/node_modules/is-extendable/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return buffer; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -var isPlainObject = __webpack_require__("../../node_modules/is-plain-object/index.js"); -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; +function buffer(closingNotifier) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var currentBuffer = []; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return currentBuffer.push(value); }, function () { + subscriber.next(currentBuffer); + subscriber.complete(); + })); + closingNotifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + var b = currentBuffer; + currentBuffer = []; + subscriber.next(b); + }, _util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"])); + return function () { + currentBuffer = null; + }; + }); +} +//# sourceMappingURL=buffer.js.map /***/ }), -/***/ "../../node_modules/ncp/lib/ncp.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var fs = __webpack_require__("fs"), - path = __webpack_require__("path"); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bufferCount; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); -module.exports = ncp; -ncp.ncp = ncp; -function ncp (source, dest, options, callback) { - var cback = callback; - if (!callback) { - cback = options; - options = {}; - } - - var basePath = process.cwd(), - currentPath = path.resolve(basePath, source), - targetPath = path.resolve(basePath, dest), - filter = options.filter, - rename = options.rename, - transform = options.transform, - clobber = options.clobber !== false, - modified = options.modified, - dereference = options.dereference, - errs = null, - started = 0, - finished = 0, - running = 0, - limit = options.limit || ncp.limit || 16; - - limit = (limit < 1) ? 1 : (limit > 512) ? 512 : limit; - startCopy(currentPath); - - function startCopy(source) { - started++; - if (filter) { - if (filter instanceof RegExp) { - if (!filter.test(source)) { - return cb(true); - } - } - else if (typeof filter === 'function') { - if (!filter(source)) { - return cb(true); - } - } - } - return getStats(source); - } +function bufferCount(bufferSize, startBufferEvery) { + if (startBufferEvery === void 0) { startBufferEvery = null; } + startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize; + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var buffers = []; + var count = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var e_1, _a, e_2, _b; + var toEmit = null; + if (count++ % startBufferEvery === 0) { + buffers.push([]); + } + try { + for (var buffers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) { + var buffer = buffers_1_1.value; + buffer.push(value); + if (bufferSize <= buffer.length) { + toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : []; + toEmit.push(buffer); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1); + } + finally { if (e_1) throw e_1.error; } + } + if (toEmit) { + try { + for (var toEmit_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) { + var buffer = toEmit_1_1.value; + Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__[/* arrRemove */ "a"])(buffers, buffer); + subscriber.next(buffer); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1); + } + finally { if (e_2) throw e_2.error; } + } + } + }, function () { + var e_3, _a; + try { + for (var buffers_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) { + var buffer = buffers_2_1.value; + subscriber.next(buffer); + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2); + } + finally { if (e_3) throw e_3.error; } + } + subscriber.complete(); + }, undefined, function () { + buffers = null; + })); + }); +} +//# sourceMappingURL=bufferCount.js.map - function getStats(source) { - var stat = dereference ? fs.stat : fs.lstat; - if (running >= limit) { - return setImmediate(function () { - getStats(source); - }); - } - running++; - stat(source, function (err, stats) { - var item = {}; - if (err) { - return onError(err); - } +/***/ }), - // We need to get the mode from the stats object and preserve it. - item.name = source; - item.mode = stats.mode; - item.mtime = stats.mtime; //modified time - item.atime = stats.atime; //access time +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (stats.isDirectory()) { - return onDir(item); - } - else if (stats.isFile()) { - return onFile(item); - } - else if (stats.isSymbolicLink()) { - // Symlinks don't really need to know about the mode. - return onLink(source); - } - }); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bufferTime; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - function onFile(file) { - var target = file.name.replace(currentPath, targetPath); - if(rename) { - target = rename(target); - } - isWritable(target, function (writable) { - if (writable) { - return copyFile(file, target); - } - if(clobber) { - rmFile(target, function () { - copyFile(file, target); - }); - } - if (modified) { - var stat = dereference ? fs.stat : fs.lstat; - stat(target, function(err, stats) { - //if souce modified time greater to target modified time copy file - if (file.mtime.getTime()>stats.mtime.getTime()) - copyFile(file, target); - else return cb(); - }); - } - else { - return cb(); - } - }); - } - function copyFile(file, target) { - var readStream = fs.createReadStream(file.name), - writeStream = fs.createWriteStream(target, { mode: file.mode }); - - readStream.on('error', onError); - writeStream.on('error', onError); - - if(transform) { - transform(readStream, writeStream, file); - } else { - writeStream.on('open', function() { - readStream.pipe(writeStream); - }); - } - writeStream.once('finish', function() { - if (modified) { - //target file modified date sync. - fs.utimesSync(target, file.atime, file.mtime); - cb(); - } - else cb(); - }); - } - function rmFile(file, done) { - fs.unlink(file, function (err) { - if (err) { - return onError(err); - } - return done(); - }); - } - function onDir(dir) { - var target = dir.name.replace(currentPath, targetPath); - isWritable(target, function (writable) { - if (writable) { - return mkDir(dir, target); - } - copyDir(dir.name); - }); - } - function mkDir(dir, target) { - fs.mkdir(target, dir.mode, function (err) { - if (err) { - return onError(err); - } - copyDir(dir.name); - }); - } - function copyDir(dir) { - fs.readdir(dir, function (err, items) { - if (err) { - return onError(err); - } - items.forEach(function (item) { - startCopy(path.join(dir, item)); - }); - return cb(); - }); - } - function onLink(link) { - var target = link.replace(currentPath, targetPath); - fs.readlink(link, function (err, resolvedPath) { - if (err) { - return onError(err); - } - checkLink(resolvedPath, target); - }); - } - function checkLink(resolvedPath, target) { - if (dereference) { - resolvedPath = path.resolve(basePath, resolvedPath); +function bufferTime(bufferTimeSpan) { + var _a, _b; + var otherArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + otherArgs[_i - 1] = arguments[_i]; } - isWritable(target, function (writable) { - if (writable) { - return makeLink(resolvedPath, target); - } - fs.readlink(target, function (err, targetDest) { - if (err) { - return onError(err); - } - if (dereference) { - targetDest = path.resolve(basePath, targetDest); + var scheduler = (_a = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popScheduler */ "c"])(otherArgs)) !== null && _a !== void 0 ? _a : _scheduler_async__WEBPACK_IMPORTED_MODULE_5__[/* asyncScheduler */ "b"]; + var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null; + var maxBufferSize = otherArgs[1] || Infinity; + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + var bufferRecords = []; + var restartOnEmit = false; + var emit = function (record) { + var buffer = record.buffer, subs = record.subs; + subs.unsubscribe(); + Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_4__[/* arrRemove */ "a"])(bufferRecords, record); + subscriber.next(buffer); + restartOnEmit && startBuffer(); + }; + var startBuffer = function () { + if (bufferRecords) { + var subs = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"](); + subscriber.add(subs); + var buffer = []; + var record_1 = { + buffer: buffer, + subs: subs, + }; + bufferRecords.push(record_1); + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__[/* executeSchedule */ "a"])(subs, scheduler, function () { return emit(record_1); }, bufferTimeSpan); + } + }; + if (bufferCreationInterval !== null && bufferCreationInterval >= 0) { + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__[/* executeSchedule */ "a"])(subscriber, scheduler, startBuffer, bufferCreationInterval, true); } - if (targetDest === resolvedPath) { - return cb(); + else { + restartOnEmit = true; } - return rmFile(target, function () { - makeLink(resolvedPath, target); - }); - }); - }); - } - - function makeLink(linkPath, target) { - fs.symlink(linkPath, target, function (err) { - if (err) { - return onError(err); - } - return cb(); - }); - } - - function isWritable(path, done) { - fs.lstat(path, function (err) { - if (err) { - if (err.code === 'ENOENT') return done(true); - return done(false); - } - return done(false); + startBuffer(); + var bufferTimeSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var e_1, _a; + var recordsCopy = bufferRecords.slice(); + try { + for (var recordsCopy_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) { + var record = recordsCopy_1_1.value; + var buffer = record.buffer; + buffer.push(value); + maxBufferSize <= buffer.length && emit(record); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1); + } + finally { if (e_1) throw e_1.error; } + } + }, function () { + while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) { + subscriber.next(bufferRecords.shift().buffer); + } + bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe(); + subscriber.complete(); + subscriber.unsubscribe(); + }, undefined, function () { return (bufferRecords = null); }); + source.subscribe(bufferTimeSubscriber); }); - } - - function onError(err) { - if (options.stopOnError) { - return cback(err); - } - else if (!errs && options.errs) { - errs = fs.createWriteStream(options.errs); - } - else if (!errs) { - errs = []; - } - if (typeof errs.write === 'undefined') { - errs.push(err); - } - else { - errs.write(err.stack + '\n\n'); - } - return cb(); - } - - function cb(skipped) { - if (!skipped) running--; - finished++; - if ((started === finished) && (running === 0)) { - if (cback !== undefined ) { - return errs ? cback(errs) : cback(null); - } - } - } } +//# sourceMappingURL=bufferTime.js.map +/***/ }), +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bufferToggle; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); -/***/ }), -/***/ "../../node_modules/nested-error-stacks/index.js": -/***/ (function(module, exports, __webpack_require__) { -var inherits = __webpack_require__("util").inherits; -var NestedError = function (message, nested) { - this.nested = nested; - if (message instanceof Error) { - nested = message; - } else if (typeof message !== 'undefined') { - Object.defineProperty(this, 'message', { - value: message, - writable: true, - enumerable: false, - configurable: true - }); - } - Error.captureStackTrace(this, this.constructor); - var oldStackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack'); - var stackDescriptor = buildStackDescriptor(oldStackDescriptor, nested); - Object.defineProperty(this, 'stack', stackDescriptor); -}; -function buildStackDescriptor(oldStackDescriptor, nested) { - if (oldStackDescriptor.get) { - return { - get: function () { - var stack = oldStackDescriptor.get.call(this); - return buildCombinedStacks(stack, this.nested); +function bufferToggle(openings, closingSelector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + var buffers = []; + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(openings).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (openValue) { + var buffer = []; + buffers.push(buffer); + var closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"](); + var emitBuffer = function () { + Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_6__[/* arrRemove */ "a"])(buffers, buffer); + subscriber.next(buffer); + closingSubscription.unsubscribe(); + }; + closingSubscription.add(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(closingSelector(openValue)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, emitBuffer, _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"]))); + }, _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"])); + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var e_1, _a; + try { + for (var buffers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) { + var buffer = buffers_1_1.value; + buffer.push(value); + } } - }; - } else { - var stack = oldStackDescriptor.value; - return { - value: buildCombinedStacks(stack, nested) - }; - } -} - -function buildCombinedStacks(stack, nested) { - if (nested) { - stack += '\nCaused By: ' + nested.stack; - } - return stack; + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1); + } + finally { if (e_1) throw e_1.error; } + } + }, function () { + while (buffers.length > 0) { + subscriber.next(buffers.shift()); + } + subscriber.complete(); + })); + }); } +//# sourceMappingURL=bufferToggle.js.map -inherits(NestedError, Error); -NestedError.prototype.name = 'NestedError'; - +/***/ }), -module.exports = NestedError; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bufferWhen; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/***/ }), -/***/ "../../node_modules/normalize-package-data/lib/extract_description.js": -/***/ (function(module, exports) { -module.exports = extractDescription -// Extracts description from contents of a readme file in markdown format -function extractDescription (d) { - if (!d) return; - if (d === "ERROR: No README data found!") return; - // the first block of text before the first heading - // that isn't the first line heading - d = d.trim().split('\n') - for (var s = 0; d[s] && d[s].trim().match(/^(#|$)/); s ++); - var l = d.length - for (var e = s + 1; e < l && d[e].trim(); e ++); - return d.slice(s, e).join(' ').trim() +function bufferWhen(closingSelector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var buffer = null; + var closingSubscriber = null; + var openBuffer = function () { + closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); + var b = buffer; + buffer = []; + b && subscriber.next(b); + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(closingSelector()).subscribe((closingSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, openBuffer, _util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"]))); + }; + openBuffer(); + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return buffer === null || buffer === void 0 ? void 0 : buffer.push(value); }, function () { + buffer && subscriber.next(buffer); + subscriber.complete(); + }, undefined, function () { return (buffer = closingSubscriber = null); })); + }); } - +//# sourceMappingURL=bufferWhen.js.map /***/ }), -/***/ "../../node_modules/normalize-package-data/lib/fixer.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var semver = __webpack_require__("../../node_modules/normalize-package-data/node_modules/semver/semver.js") -var validateLicense = __webpack_require__("../../node_modules/validate-npm-package-license/index.js"); -var hostedGitInfo = __webpack_require__("../../node_modules/hosted-git-info/index.js") -var isBuiltinModule = __webpack_require__("../../node_modules/resolve/index.js").isCore -var depTypes = ["dependencies","devDependencies","optionalDependencies"] -var extractDescription = __webpack_require__("../../node_modules/normalize-package-data/lib/extract_description.js") -var url = __webpack_require__("url") -var typos = __webpack_require__("../../node_modules/normalize-package-data/lib/typos.json") +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return catchError; }); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -var fixer = module.exports = { - // default warning function - warn: function() {}, - fixRepositoryField: function(data) { - if (data.repositories) { - this.warn("repositories"); - data.repository = data.repositories[0] - } - if (!data.repository) return this.warn("missingRepository") - if (typeof data.repository === "string") { - data.repository = { - type: "git", - url: data.repository - } - } - var r = data.repository.url || "" - if (r) { - var hosted = hostedGitInfo.fromUrl(r) - if (hosted) { - r = data.repository.url - = hosted.getDefaultRepresentation() == "shortcut" ? hosted.https() : hosted.toString() - } - } - if (r.match(/github.com\/[^\/]+\/[^\/]+\.git\.git$/)) { - this.warn("brokenGitUrl", r) - } - } +function catchError(selector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + var innerSub = null; + var syncUnsub = false; + var handledResult; + innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, undefined, function (err) { + handledResult = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(selector(err, catchError(selector)(source))); + if (innerSub) { + innerSub.unsubscribe(); + innerSub = null; + handledResult.subscribe(subscriber); + } + else { + syncUnsub = true; + } + })); + if (syncUnsub) { + innerSub.unsubscribe(); + innerSub = null; + handledResult.subscribe(subscriber); + } + }); +} +//# sourceMappingURL=catchError.js.map -, fixTypos: function(data) { - Object.keys(typos.topLevel).forEach(function (d) { - if (data.hasOwnProperty(d)) { - this.warn("typo", d, typos.topLevel[d]) - } - }, this) - } +/***/ }), -, fixScriptsField: function(data) { - if (!data.scripts) return - if (typeof data.scripts !== "object") { - this.warn("nonObjectScripts") - delete data.scripts - return - } - Object.keys(data.scripts).forEach(function (k) { - if (typeof data.scripts[k] !== "string") { - this.warn("nonStringScript") - delete data.scripts[k] - } else if (typos.script[k] && !data.scripts[typos.script[k]]) { - this.warn("typo", k, typos.script[k], "scripts") - } - }, this) - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/combineAll.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -, fixFilesField: function(data) { - var files = data.files - if (files && !Array.isArray(files)) { - this.warn("nonArrayFiles") - delete data.files - } else if (data.files) { - data.files = data.files.filter(function(file) { - if (!file || typeof file !== "string") { - this.warn("invalidFilename", file) - return false - } else { - return true - } - }, this) - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineAll; }); +/* harmony import */ var _combineLatestAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js"); -, fixBinField: function(data) { - if (!data.bin) return; - if (typeof data.bin === "string") { - var b = {} - var match - if (match = data.name.match(/^@[^/]+[/](.*)$/)) { - b[match[1]] = data.bin - } else { - b[data.name] = data.bin - } - data.bin = b - } - } +var combineAll = _combineLatestAll__WEBPACK_IMPORTED_MODULE_0__[/* combineLatestAll */ "a"]; +//# sourceMappingURL=combineAll.js.map -, fixManField: function(data) { - if (!data.man) return; - if (typeof data.man === "string") { - data.man = [ data.man ] - } - } -, fixBundleDependenciesField: function(data) { - var bdd = "bundledDependencies" - var bd = "bundleDependencies" - if (data[bdd] && !data[bd]) { - data[bd] = data[bdd] - delete data[bdd] - } - if (data[bd] && !Array.isArray(data[bd])) { - this.warn("nonArrayBundleDependencies") - delete data[bd] - } else if (data[bd]) { - data[bd] = data[bd].filter(function(bd) { - if (!bd || typeof bd !== 'string') { - this.warn("nonStringBundleDependency", bd) - return false - } else { - if (!data.dependencies) { - data.dependencies = {} - } - if (!data.dependencies.hasOwnProperty(bd)) { - this.warn("nonDependencyBundleDependency", bd) - data.dependencies[bd] = "*" - } - return true - } - }, this) - } - } +/***/ }), -, fixDependencies: function(data, strict) { - var loose = !strict - objectifyDeps(data, this.warn) - addOptionalDepsToDeps(data, this.warn) - this.fixBundleDependenciesField(data) +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - ;['dependencies','devDependencies'].forEach(function(deps) { - if (!(deps in data)) return - if (!data[deps] || typeof data[deps] !== "object") { - this.warn("nonObjectDependencies", deps) - delete data[deps] - return - } - Object.keys(data[deps]).forEach(function (d) { - var r = data[deps][d] - if (typeof r !== 'string') { - this.warn("nonStringDependency", d, JSON.stringify(r)) - delete data[deps][d] - } - var hosted = hostedGitInfo.fromUrl(data[deps][d]) - if (hosted) data[deps][d] = hosted.toString() - }, this) - }, this) - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineLatest; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); +/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/pipe.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -, fixModulesField: function (data) { - if (data.modules) { - this.warn("deprecatedModules") - delete data.modules - } - } -, fixKeywordsField: function (data) { - if (typeof data.keywords === "string") { - data.keywords = data.keywords.split(/,\s+/) - } - if (data.keywords && !Array.isArray(data.keywords)) { - delete data.keywords - this.warn("nonArrayKeywords") - } else if (data.keywords) { - data.keywords = data.keywords.filter(function(kw) { - if (typeof kw !== "string" || !kw) { - this.warn("nonStringKeyword"); - return false - } else { - return true - } - }, this) - } - } -, fixVersionField: function(data, strict) { - // allow "loose" semver 1.0 versions in non-strict mode - // enforce strict semver 2.0 compliance in strict mode - var loose = !strict - if (!data.version) { - data.version = "" - return true - } - if (!semver.valid(data.version, loose)) { - throw new Error('Invalid version: "'+ data.version + '"') - } - data.version = semver.clean(data.version, loose) - return true - } -, fixPeople: function(data) { - modifyPeople(data, unParsePerson) - modifyPeople(data, parsePerson) - } -, fixNameField: function(data, options) { - if (typeof options === "boolean") options = {strict: options} - else if (typeof options === "undefined") options = {} - var strict = options.strict - if (!data.name && !strict) { - data.name = "" - return - } - if (typeof data.name !== "string") { - throw new Error("name field must be a string.") - } - if (!strict) - data.name = data.name.trim() - ensureValidName(data.name, strict, options.allowLegacyCase) - if (isBuiltinModule(data.name)) - this.warn("conflictingName", data.name) - } -, fixDescriptionField: function (data) { - if (data.description && typeof data.description !== 'string') { - this.warn("nonStringDescription") - delete data.description +function combineLatest() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; } - if (data.readme && !data.description) - data.description = extractDescription(data.readme) - if(data.description === undefined) delete data.description; - if (!data.description) this.warn("missingDescription") - } + var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popResultSelector */ "b"])(args); + return resultSelector + ? Object(_util_pipe__WEBPACK_IMPORTED_MODULE_5__[/* pipe */ "a"])(combineLatest.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))), Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__[/* mapOneOrManyArgs */ "a"])(resultSelector)) + : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + Object(_observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__[/* combineLatestInit */ "b"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__[/* argsOrArgArray */ "a"])(args))))(subscriber); + }); +} +//# sourceMappingURL=combineLatest.js.map -, fixReadmeField: function (data) { - if (!data.readme) { - this.warn("missingReadme") - data.readme = "ERROR: No README data found!" - } - } +/***/ }), -, fixBugsField: function(data) { - if (!data.bugs && data.repository && data.repository.url) { - var hosted = hostedGitInfo.fromUrl(data.repository.url) - if(hosted && hosted.bugs()) { - data.bugs = {url: hosted.bugs()} - } - } - else if(data.bugs) { - var emailRe = /^.+@.*\..+$/ - if(typeof data.bugs == "string") { - if(emailRe.test(data.bugs)) - data.bugs = {email:data.bugs} - else if(url.parse(data.bugs).protocol) - data.bugs = {url: data.bugs} - else - this.warn("nonEmailUrlBugsString") - } - else { - bugsTypos(data.bugs, this.warn) - var oldBugs = data.bugs - data.bugs = {} - if(oldBugs.url) { - if(typeof(oldBugs.url) == "string" && url.parse(oldBugs.url).protocol) - data.bugs.url = oldBugs.url - else - this.warn("nonUrlBugsUrlField") - } - if(oldBugs.email) { - if(typeof(oldBugs.email) == "string" && emailRe.test(oldBugs.email)) - data.bugs.email = oldBugs.email - else - this.warn("nonEmailBugsEmailField") - } - } - if(!data.bugs.email && !data.bugs.url) { - delete data.bugs - this.warn("emptyNormalizedBugs") - } - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -, fixHomepageField: function(data) { - if (!data.homepage && data.repository && data.repository.url) { - var hosted = hostedGitInfo.fromUrl(data.repository.url) - if (hosted && hosted.docs()) data.homepage = hosted.docs() - } - if (!data.homepage) return +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineLatestAll; }); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"); +/* harmony import */ var _joinAllInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js"); - if(typeof data.homepage !== "string") { - this.warn("nonUrlHomepage") - return delete data.homepage - } - if(!url.parse(data.homepage).protocol) { - data.homepage = "http://" + data.homepage - } - } -, fixLicenseField: function(data) { - if (!data.license) { - return this.warn("missingLicense") - } else{ - if ( - typeof(data.license) !== 'string' || - data.license.length < 1 || - data.license.trim() === '' - ) { - this.warn("invalidLicense") - } else { - if (!validateLicense(data.license).validForNewPackages) - this.warn("invalidLicense") - } - } - } +function combineLatestAll(project) { + return Object(_joinAllInternals__WEBPACK_IMPORTED_MODULE_1__[/* joinAllInternals */ "a"])(_observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__[/* combineLatest */ "a"], project); } +//# sourceMappingURL=combineLatestAll.js.map -function isValidScopedPackageName(spec) { - if (spec.charAt(0) !== '@') return false +/***/ }), - var rest = spec.slice(1).split('/') - if (rest.length !== 2) return false +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return rest[0] && rest[1] && - rest[0] === encodeURIComponent(rest[0]) && - rest[1] === encodeURIComponent(rest[1]) -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineLatestWith; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js"); -function isCorrectlyEncodedName(spec) { - return !spec.match(/[\/@\s\+%:]/) && - spec === encodeURIComponent(spec) -} -function ensureValidName (name, strict, allowLegacyCase) { - if (name.charAt(0) === "." || - !(isValidScopedPackageName(name) || isCorrectlyEncodedName(name)) || - (strict && (!allowLegacyCase) && name !== name.toLowerCase()) || - name.toLowerCase() === "node_modules" || - name.toLowerCase() === "favicon.ico") { - throw new Error("Invalid name: " + JSON.stringify(name)) - } +function combineLatestWith() { + var otherSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherSources[_i] = arguments[_i]; + } + return _combineLatest__WEBPACK_IMPORTED_MODULE_1__[/* combineLatest */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherSources))); } +//# sourceMappingURL=combineLatestWith.js.map -function modifyPeople (data, fn) { - if (data.author) data.author = fn(data.author) - ;["maintainers", "contributors"].forEach(function (set) { - if (!Array.isArray(data[set])) return; - data[set] = data[set].map(fn) - }) - return data -} +/***/ }), -function unParsePerson (person) { - if (typeof person === "string") return person - var name = person.name || "" - var u = person.url || person.web - var url = u ? (" ("+u+")") : "" - var e = person.email || person.mail - var email = e ? (" <"+e+">") : "" - return name+email+url -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concat.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function parsePerson (person) { - if (typeof person !== "string") return person - var name = person.match(/^([^\(<]+)/) - var url = person.match(/\(([^\)]+)\)/) - var email = person.match(/<([^>]+)>/) - var obj = {} - if (name && name[0].trim()) obj.name = name[0].trim() - if (email) obj.email = email[1]; - if (url) obj.url = url[1]; - return obj -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concat; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _concatAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); -function addOptionalDepsToDeps (data, warn) { - var o = data.optionalDependencies - if (!o) return; - var d = data.dependencies || {} - Object.keys(o).forEach(function (k) { - d[k] = o[k] - }) - data.dependencies = d -} -function depObjectify (deps, type, warn) { - if (!deps) return {} - if (typeof deps === "string") { - deps = deps.trim().split(/[\n\r\s\t ,]+/) - } - if (!Array.isArray(deps)) return deps - warn("deprecatedArrayDependencies", type) - var o = {} - deps.filter(function (d) { - return typeof d === "string" - }).forEach(function(d) { - d = d.trim().split(/(:?[@\s><=])/) - var dn = d.shift() - var dv = d.join("") - dv = dv.trim() - dv = dv.replace(/^@/, "") - o[dn] = dv - }) - return o -} -function objectifyDeps (data, warn) { - depTypes.forEach(function (type) { - if (!data[type]) return; - data[type] = depObjectify(data[type], type, warn) - }) -} -function bugsTypos(bugs, warn) { - if (!bugs) return - Object.keys(bugs).forEach(function (k) { - if (typos.bugs[k]) { - warn("typo", k, typos.bugs[k], "bugs") - bugs[typos.bugs[k]] = bugs[k] - delete bugs[k] + +function concat() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; } - }) + var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__[/* popScheduler */ "c"])(args); + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + Object(_concatAll__WEBPACK_IMPORTED_MODULE_2__[/* concatAll */ "a"])()(Object(_observable_from__WEBPACK_IMPORTED_MODULE_4__[/* from */ "a"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args)), scheduler)).subscribe(subscriber); + }); } - +//# sourceMappingURL=concat.js.map /***/ }), -/***/ "../../node_modules/normalize-package-data/lib/make_warning.js": -/***/ (function(module, exports, __webpack_require__) { - -var util = __webpack_require__("util") -var messages = __webpack_require__("../../node_modules/normalize-package-data/lib/warning_messages.json") +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -module.exports = function() { - var args = Array.prototype.slice.call(arguments, 0) - var warningName = args.shift() - if (warningName == "typo") { - return makeTypoWarning.apply(null,args) - } - else { - var msgTemplate = messages[warningName] ? messages[warningName] : warningName + ": '%s'" - args.unshift(msgTemplate) - return util.format.apply(null, args) - } -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concatAll; }); +/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); -function makeTypoWarning (providedName, probableName, field) { - if (field) { - providedName = field + "['" + providedName + "']" - probableName = field + "['" + probableName + "']" - } - return util.format(messages.typo, providedName, probableName) +function concatAll() { + return Object(_mergeAll__WEBPACK_IMPORTED_MODULE_0__[/* mergeAll */ "a"])(1); } - +//# sourceMappingURL=concatAll.js.map /***/ }), -/***/ "../../node_modules/normalize-package-data/lib/normalize.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -module.exports = normalize +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concatMap; }); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -var fixer = __webpack_require__("../../node_modules/normalize-package-data/lib/fixer.js") -normalize.fixer = fixer -var makeWarning = __webpack_require__("../../node_modules/normalize-package-data/lib/make_warning.js") +function concatMap(project, resultSelector) { + return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(resultSelector) ? Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(project, resultSelector, 1) : Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(project, 1); +} +//# sourceMappingURL=concatMap.js.map -var fieldsToFix = ['name','version','description','repository','modules','scripts' - ,'files','bin','man','bugs','keywords','readme','homepage','license'] -var otherThingsToFix = ['dependencies','people', 'typos'] +/***/ }), -var thingsToFix = fieldsToFix.map(function(fieldName) { - return ucFirst(fieldName) + "Field" -}) -// two ways to do this in CoffeeScript on only one line, sub-70 chars: -// thingsToFix = fieldsToFix.map (name) -> ucFirst(name) + "Field" -// thingsToFix = (ucFirst(name) + "Field" for name in fieldsToFix) -thingsToFix = thingsToFix.concat(otherThingsToFix) +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function normalize (data, warn, strict) { - if(warn === true) warn = null, strict = true - if(!strict) strict = false - if(!warn || data.private) warn = function(msg) { /* noop */ } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concatMapTo; }); +/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - if (data.scripts && - data.scripts.install === "node-gyp rebuild" && - !data.scripts.preinstall) { - data.gypfile = true - } - fixer.warn = function() { warn(makeWarning.apply(null, arguments)) } - thingsToFix.forEach(function(thingName) { - fixer["fix" + ucFirst(thingName)](data, strict) - }) - data._id = data.name + "@" + data.version -} -function ucFirst (string) { - return string.charAt(0).toUpperCase() + string.slice(1); +function concatMapTo(innerObservable, resultSelector) { + return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(resultSelector) ? Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__[/* concatMap */ "a"])(function () { return innerObservable; }, resultSelector) : Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__[/* concatMap */ "a"])(function () { return innerObservable; }); } - +//# sourceMappingURL=concatMapTo.js.map /***/ }), -/***/ "../../node_modules/normalize-package-data/lib/typos.json": -/***/ (function(module) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concatWith.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -module.exports = JSON.parse("{\"topLevel\":{\"dependancies\":\"dependencies\",\"dependecies\":\"dependencies\",\"depdenencies\":\"dependencies\",\"devEependencies\":\"devDependencies\",\"depends\":\"dependencies\",\"dev-dependencies\":\"devDependencies\",\"devDependences\":\"devDependencies\",\"devDepenencies\":\"devDependencies\",\"devdependencies\":\"devDependencies\",\"repostitory\":\"repository\",\"repo\":\"repository\",\"prefereGlobal\":\"preferGlobal\",\"hompage\":\"homepage\",\"hampage\":\"homepage\",\"autohr\":\"author\",\"autor\":\"author\",\"contributers\":\"contributors\",\"publicationConfig\":\"publishConfig\",\"script\":\"scripts\"},\"bugs\":{\"web\":\"url\",\"name\":\"url\"},\"script\":{\"server\":\"start\",\"tests\":\"test\"}}"); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concatWith; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concat.js"); + + +function concatWith() { + var otherSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherSources[_i] = arguments[_i]; + } + return _concat__WEBPACK_IMPORTED_MODULE_1__[/* concat */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherSources))); +} +//# sourceMappingURL=concatWith.js.map /***/ }), -/***/ "../../node_modules/normalize-package-data/lib/warning_messages.json": -/***/ (function(module) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/connect.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -module.exports = JSON.parse("{\"repositories\":\"'repositories' (plural) Not supported. Please pick one as the 'repository' field\",\"missingRepository\":\"No repository field.\",\"brokenGitUrl\":\"Probably broken git url: %s\",\"nonObjectScripts\":\"scripts must be an object\",\"nonStringScript\":\"script values must be string commands\",\"nonArrayFiles\":\"Invalid 'files' member\",\"invalidFilename\":\"Invalid filename in 'files' list: %s\",\"nonArrayBundleDependencies\":\"Invalid 'bundleDependencies' list. Must be array of package names\",\"nonStringBundleDependency\":\"Invalid bundleDependencies member: %s\",\"nonDependencyBundleDependency\":\"Non-dependency in bundleDependencies: %s\",\"nonObjectDependencies\":\"%s field must be an object\",\"nonStringDependency\":\"Invalid dependency: %s %s\",\"deprecatedArrayDependencies\":\"specifying %s as array is deprecated\",\"deprecatedModules\":\"modules field is deprecated\",\"nonArrayKeywords\":\"keywords should be an array of strings\",\"nonStringKeyword\":\"keywords should be an array of strings\",\"conflictingName\":\"%s is also the name of a node core module.\",\"nonStringDescription\":\"'description' field should be a string\",\"missingDescription\":\"No description\",\"missingReadme\":\"No README data\",\"missingLicense\":\"No license field.\",\"nonEmailUrlBugsString\":\"Bug string field must be url, email, or {email,url}\",\"nonUrlBugsUrlField\":\"bugs.url field must be a string url. Deleted.\",\"nonEmailBugsEmailField\":\"bugs.email field must be a string email. Deleted.\",\"emptyNormalizedBugs\":\"Normalized value of bugs field is an empty object. Deleted.\",\"nonUrlHomepage\":\"homepage field must be a string url. Deleted.\",\"invalidLicense\":\"license should be a valid SPDX license expression\",\"typo\":\"%s should probably be %s.\"}"); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return connect; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _observable_fromSubscribable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/fromSubscribable.js"); -/***/ }), -/***/ "../../node_modules/normalize-package-data/node_modules/semver/semver.js": -/***/ (function(module, exports) { -exports = module.exports = SemVer -var debug -/* istanbul ignore next */ -if (typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift('SEMVER') - console.log.apply(console, args) - } -} else { - debug = function () {} +var DEFAULT_CONFIG = { + connector: function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); }, +}; +function connect(selector, config) { + if (config === void 0) { config = DEFAULT_CONFIG; } + var connector = config.connector; + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + var subject = connector(); + Object(_observable_from__WEBPACK_IMPORTED_MODULE_1__[/* from */ "a"])(selector(Object(_observable_fromSubscribable__WEBPACK_IMPORTED_MODULE_3__[/* fromSubscribable */ "a"])(subject))).subscribe(subscriber); + subscriber.add(source.subscribe(subject)); + }); } +//# sourceMappingURL=connect.js.map -// 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 || - /* istanbul ignore next */ 9007199254740991 +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/count.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -// Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16 +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return count; }); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); -// The actual regexps go on exports.re -var re = exports.re = [] -var src = exports.src = [] -var R = 0 +function count(predicate) { + return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[/* reduce */ "a"])(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0); +} +//# sourceMappingURL=count.js.map -// 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. +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/debounce.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var NUMERICIDENTIFIER = R++ -src[NUMERICIDENTIFIER] = '0|[1-9]\\d*' -var NUMERICIDENTIFIERLOOSE = R++ -src[NUMERICIDENTIFIERLOOSE] = '[0-9]+' +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return debounce; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -// ## 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] + ')' +function debounce(durationSelector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var hasValue = false; + var lastValue = null; + var durationSubscriber = null; + var emit = function () { + durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); + durationSubscriber = null; + if (hasValue) { + hasValue = false; + var value = lastValue; + lastValue = null; + subscriber.next(value); + } + }; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); + hasValue = true; + lastValue = value; + durationSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, emit, _util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"]); + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(durationSelector(value)).subscribe(durationSubscriber); + }, function () { + emit(); + subscriber.complete(); + }, undefined, function () { + lastValue = durationSubscriber = null; + })); + }); +} +//# sourceMappingURL=debounce.js.map -var MAINVERSIONLOOSE = R++ -src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')' +/***/ }), -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var PRERELEASEIDENTIFIER = R++ -src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + - '|' + src[NONNUMERICIDENTIFIER] + ')' +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return debounceTime; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -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] + ')*))' +function debounceTime(dueTime, scheduler) { + if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var activeTask = null; + var lastValue = null; + var lastTime = null; + var emit = function () { + if (activeTask) { + activeTask.unsubscribe(); + activeTask = null; + var value = lastValue; + lastValue = null; + subscriber.next(value); + } + }; + function emitWhenIdle() { + var targetTime = lastTime + dueTime; + var now = scheduler.now(); + if (now < targetTime) { + activeTask = this.schedule(undefined, targetTime - now); + subscriber.add(activeTask); + return; + } + emit(); + } + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + lastValue = value; + lastTime = scheduler.now(); + if (!activeTask) { + activeTask = scheduler.schedule(emitWhenIdle, dueTime); + subscriber.add(activeTask); + } + }, function () { + emit(); + subscriber.complete(); + }, undefined, function () { + lastValue = activeTask = null; + })); + }); +} +//# sourceMappingURL=debounceTime.js.map -var PRERELEASELOOSE = R++ -src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))' +/***/ }), -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var BUILDIDENTIFIER = R++ -src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+' +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return defaultIfEmpty; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. -var BUILD = R++ -src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + - '(?:\\.' + src[BUILDIDENTIFIER] + ')*))' +function defaultIfEmpty(defaultValue) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var hasValue = false; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + hasValue = true; + subscriber.next(value); + }, function () { + if (!hasValue) { + subscriber.next(defaultValue); + } + subscriber.complete(); + })); + }); +} +//# sourceMappingURL=defaultIfEmpty.js.map -// ## 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. +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/delay.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var FULL = R++ -var FULLPLAIN = 'v?' + src[MAINVERSION] + - src[PRERELEASE] + '?' + - src[BUILD] + '?' +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return delay; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _delayWhen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js"); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); -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 + '$' +function delay(due, scheduler) { + if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } + var duration = Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__[/* timer */ "a"])(due, scheduler); + return Object(_delayWhen__WEBPACK_IMPORTED_MODULE_1__[/* delayWhen */ "a"])(function () { return duration; }); +} +//# sourceMappingURL=delay.js.map -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|\\*' +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var XRANGEPLAIN = R++ -src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:' + src[PRERELEASE] + ')?' + - src[BUILD] + '?' + - ')?)?' +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return delayWhen; }); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/concat.js"); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); +/* harmony import */ var _ignoreElements__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js"); +/* harmony import */ var _mapTo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js"); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); -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~' +function delayWhen(delayDurationSelector, subscriptionDelay) { + if (subscriptionDelay) { + return function (source) { + return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__[/* concat */ "a"])(subscriptionDelay.pipe(Object(_take__WEBPACK_IMPORTED_MODULE_1__[/* take */ "a"])(1), Object(_ignoreElements__WEBPACK_IMPORTED_MODULE_2__[/* ignoreElements */ "a"])()), source.pipe(delayWhen(delayDurationSelector))); + }; + } + return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_4__[/* mergeMap */ "a"])(function (value, index) { return delayDurationSelector(value, index).pipe(Object(_take__WEBPACK_IMPORTED_MODULE_1__[/* take */ "a"])(1), Object(_mapTo__WEBPACK_IMPORTED_MODULE_3__[/* mapTo */ "a"])(value)); }); +} +//# sourceMappingURL=delayWhen.js.map -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] = '(?:\\^)' +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var CARETTRIM = R++ -src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+' -re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g') -var caretTrimReplace = '$1^' +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return dematerialize; }); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Notification.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -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] + ')' +function dematerialize() { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (notification) { return Object(_Notification__WEBPACK_IMPORTED_MODULE_0__[/* observeNotification */ "c"])(notification, subscriber); })); + }); +} +//# sourceMappingURL=dematerialize.js.map -// 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*$' +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/distinct.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var HYPHENRANGELOOSE = R++ -src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$' +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return distinct; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -// 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]) - } + +function distinct(keySelector, flushes) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var distinctKeys = new Set(); + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var key = keySelector ? keySelector(value) : value; + if (!distinctKeys.has(key)) { + distinctKeys.add(key); + subscriber.next(value); + } + })); + flushes === null || flushes === void 0 ? void 0 : flushes.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { return distinctKeys.clear(); }, _util_noop__WEBPACK_IMPORTED_MODULE_2__[/* noop */ "a"])); + }); } +//# sourceMappingURL=distinct.js.map -exports.parse = parse -function parse (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } +/***/ }), - if (version instanceof SemVer) { - return version - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (typeof version !== 'string') { - return null - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return distinctUntilChanged; }); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - if (version.length > MAX_LENGTH) { - return null - } - var r = options.loose ? re[LOOSE] : re[FULL] - if (!r.test(version)) { - return null - } - try { - return new SemVer(version, options) - } catch (er) { - return null - } +function distinctUntilChanged(comparator, keySelector) { + if (keySelector === void 0) { keySelector = _util_identity__WEBPACK_IMPORTED_MODULE_0__[/* identity */ "a"]; } + comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare; + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var previousKey; + var first = true; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var currentKey = keySelector(value); + if (first || !comparator(previousKey, currentKey)) { + first = false; + previousKey = currentKey; + subscriber.next(value); + } + })); + }); } +function defaultCompare(a, b) { + return a === b; +} +//# sourceMappingURL=distinctUntilChanged.js.map -exports.valid = valid -function valid (version, options) { - var v = parse(version, options) - return v ? v.version : null -} +/***/ }), -exports.clean = clean -function clean (version, options) { - var s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return distinctUntilKeyChanged; }); +/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js"); + +function distinctUntilKeyChanged(key, compare) { + return Object(_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__[/* distinctUntilChanged */ "a"])(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; }); } +//# sourceMappingURL=distinctUntilKeyChanged.js.map -exports.SemVer = SemVer +/***/ }), -function SemVer (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (version instanceof SemVer) { - if (version.loose === options.loose) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version) - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/elementAt.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (version.length > MAX_LENGTH) { - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return elementAt; }); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js"); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); - if (!(this instanceof SemVer)) { - return new SemVer(version, options) - } - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose - var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]) - if (!m) { - throw new TypeError('Invalid Version: ' + version) - } - this.raw = version +function elementAt(index, defaultValue) { + if (index < 0) { + throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__[/* ArgumentOutOfRangeError */ "a"](); + } + var hasDefaultValue = arguments.length >= 2; + return function (source) { + return source.pipe(Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(function (v, i) { return i === index; }), Object(_take__WEBPACK_IMPORTED_MODULE_4__[/* take */ "a"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__[/* defaultIfEmpty */ "a"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__[/* throwIfEmpty */ "a"])(function () { return new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__[/* ArgumentOutOfRangeError */ "a"](); })); + }; +} +//# sourceMappingURL=elementAt.js.map - // 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') - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/endWith.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return endWith; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/concat.js"); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/of.js"); - 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() +function endWith() { + var values = []; + for (var _i = 0; _i < arguments.length; _i++) { + values[_i] = arguments[_i]; + } + return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_1__[/* concat */ "a"])(source, _observable_of__WEBPACK_IMPORTED_MODULE_2__[/* of */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(values)))); }; } +//# sourceMappingURL=endWith.js.map -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 -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/every.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -SemVer.prototype.compare = function (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return every; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - return this.compareMain(other) || this.comparePre(other) + +function every(predicate, thisArg) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var index = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + if (!predicate.call(thisArg, value, index++, source)) { + subscriber.next(false); + subscriber.complete(); + } + }, function () { + subscriber.next(true); + subscriber.complete(); + })); + }); } +//# sourceMappingURL=every.js.map -SemVer.prototype.compareMain = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +/***/ }), - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/exhaust.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -SemVer.prototype.comparePre = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return exhaust; }); +/* harmony import */ var _exhaustAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js"); - // 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 exhaust = _exhaustAll__WEBPACK_IMPORTED_MODULE_0__[/* exhaustAll */ "a"]; +//# sourceMappingURL=exhaust.js.map - 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 +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - 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 +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return exhaustAll; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - 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 - } +function exhaustAll() { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var isComplete = false; + var innerSub = null; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (inner) { + if (!innerSub) { + innerSub = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(inner).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, function () { + innerSub = null; + isComplete && subscriber.complete(); + })); + } + }, function () { + isComplete = true; + !innerSub && subscriber.complete(); + })); + }); } +//# sourceMappingURL=exhaustAll.js.map -exports.diff = diff -function diff (version1, version2) { - if (eq(version1, version2)) { - return null - } else { - var v1 = parse(version1) - var v2 = parse(version2) - var prefix = '' - if (v1.prerelease.length || v2.prerelease.length) { - prefix = 'pre' - var defaultResult = 'prerelease' - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } - } - return defaultResult // may be undefined - } -} +/***/ }), -exports.compareIdentifiers = compareIdentifiers +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var numeric = /^[0-9]+$/ -function compareIdentifiers (a, b) { - var anum = numeric.test(a) - var bnum = numeric.test(b) +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return exhaustMap; }); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - if (anum && bnum) { - a = +a - b = +b - } - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} -exports.rcompareIdentifiers = rcompareIdentifiers -function rcompareIdentifiers (a, b) { - return compareIdentifiers(b, a) -} -exports.major = major -function major (a, loose) { - return new SemVer(a, loose).major +function exhaustMap(project, resultSelector) { + if (resultSelector) { + return function (source) { + return source.pipe(exhaustMap(function (a, i) { return Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_0__[/* map */ "a"])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); + }; + } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + var index = 0; + var innerSub = null; + var isComplete = false; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (outerValue) { + if (!innerSub) { + innerSub = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, function () { + innerSub = null; + isComplete && subscriber.complete(); + }); + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(project(outerValue, index++)).subscribe(innerSub); + } + }, function () { + isComplete = true; + !innerSub && subscriber.complete(); + })); + }); } +//# sourceMappingURL=exhaustMap.js.map -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 -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/expand.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -exports.compare = compare -function compare (a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)) -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return expand; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js"); -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) +function expand(project, concurrent, scheduler) { + if (concurrent === void 0) { concurrent = Infinity; } + concurrent = (concurrent || 0) < 1 ? Infinity : concurrent; + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_1__[/* mergeInternals */ "a"])(source, subscriber, project, concurrent, undefined, true, scheduler); + }); } +//# sourceMappingURL=expand.js.map -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) - }) -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/filter.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -exports.gt = gt -function gt (a, b, loose) { - return compare(a, b, loose) > 0 -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return filter; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -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 +function filter(predicate, thisArg) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var index = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); })); + }); } +//# sourceMappingURL=filter.js.map -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 -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/finalize.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -exports.lte = lte -function lte (a, b, loose) { - return compare(a, b, loose) <= 0 -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return finalize; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -exports.cmp = cmp -function cmp (a, op, b, loose) { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a === b +function finalize(callback) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + try { + source.subscribe(subscriber); + } + finally { + subscriber.add(callback); + } + }); +} +//# sourceMappingURL=finalize.js.map - case '!==': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a !== b +/***/ }), - case '': - case '=': - case '==': - return eq(a, b, loose) +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/find.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - case '!=': - return neq(a, b, loose) +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return find; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createFind; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - case '>': - return gt(a, b, loose) - case '>=': - return gte(a, b, loose) +function find(predicate, thisArg) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(createFind(predicate, thisArg, 'value')); +} +function createFind(predicate, thisArg, emit) { + var findIndex = emit === 'index'; + return function (source, subscriber) { + var index = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var i = index++; + if (predicate.call(thisArg, value, i, source)) { + subscriber.next(findIndex ? i : value); + subscriber.complete(); + } + }, function () { + subscriber.next(findIndex ? -1 : undefined); + subscriber.complete(); + })); + }; +} +//# sourceMappingURL=find.js.map - case '<': - return lt(a, b, loose) +/***/ }), - case '<=': - return lte(a, b, loose) +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/findIndex.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - default: - throw new TypeError('Invalid operator: ' + op) - } -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return findIndex; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/find.js"); -exports.Comparator = Comparator -function Comparator (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } - } +function findIndex(predicate, thisArg) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(Object(_find__WEBPACK_IMPORTED_MODULE_1__[/* createFind */ "a"])(predicate, thisArg, 'index')); +} +//# sourceMappingURL=findIndex.js.map - if (!(this instanceof Comparator)) { - return new Comparator(comp, options) - } +/***/ }), - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/first.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return first; }); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - debug('comp', this) -} -var ANY = {} -Comparator.prototype.parse = function (comp) { - var r = this.options.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.options.loose) - } -} -Comparator.prototype.toString = function () { - return this.value +function first(predicate, defaultValue) { + var hasDefaultValue = arguments.length >= 2; + return function (source) { + return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__[/* identity */ "a"], Object(_take__WEBPACK_IMPORTED_MODULE_2__[/* take */ "a"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__[/* defaultIfEmpty */ "a"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__[/* throwIfEmpty */ "a"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"](); })); + }; } +//# sourceMappingURL=first.js.map -Comparator.prototype.test = function (version) { - debug('Comparator.test', version, this.options.loose) +/***/ }), - if (this.semver === ANY) { - return true - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/flatMap.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (typeof version === 'string') { - version = new SemVer(version, this.options) - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return flatMap; }); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); - return cmp(version, this.operator, this.semver, this.options) -} +var flatMap = _mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"]; +//# sourceMappingURL=flatMap.js.map -Comparator.prototype.intersects = function (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } +/***/ }), - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/groupBy.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var rangeTmp +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return groupBy; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - if (this.operator === '') { - rangeTmp = new Range(comp.value, options) - return satisfies(this.value, rangeTmp, options) - } else if (comp.operator === '') { - rangeTmp = new Range(this.value, options) - return satisfies(comp.semver, rangeTmp, options) - } - 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, options) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')) - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')) - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan -} -exports.Range = Range -function Range (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (range instanceof Range) { - if (range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease) { - return range - } else { - return new Range(range.raw, options) - } - } +function groupBy(keySelector, elementOrOptions, duration, connector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__[/* operate */ "b"])(function (source, subscriber) { + var element; + if (!elementOrOptions || typeof elementOrOptions === 'function') { + element = elementOrOptions; + } + else { + (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector); + } + var groups = new Map(); + var notify = function (cb) { + groups.forEach(cb); + cb(subscriber); + }; + var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); }; + var activeGroups = 0; + var teardownAttempted = false; + var groupBySourceSubscriber = new _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* OperatorSubscriber */ "a"](subscriber, function (value) { + try { + var key_1 = keySelector(value); + var group_1 = groups.get(key_1); + if (!group_1) { + groups.set(key_1, (group_1 = connector ? connector() : new _Subject__WEBPACK_IMPORTED_MODULE_2__[/* Subject */ "a"]())); + var grouped = createGroupedObservable(key_1, group_1); + subscriber.next(grouped); + if (duration) { + var durationSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(group_1, function () { + group_1.complete(); + durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe(); + }, undefined, undefined, function () { return groups.delete(key_1); }); + groupBySourceSubscriber.add(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(duration(grouped)).subscribe(durationSubscriber_1)); + } + } + group_1.next(element ? element(value) : value); + } + catch (err) { + handleError(err); + } + }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); }, function () { + teardownAttempted = true; + return activeGroups === 0; + }); + source.subscribe(groupBySourceSubscriber); + function createGroupedObservable(key, groupSubject) { + var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (groupSubscriber) { + activeGroups++; + var innerSub = groupSubject.subscribe(groupSubscriber); + return function () { + innerSub.unsubscribe(); + --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe(); + }; + }); + result.key = key; + return result; + } + }); +} +//# sourceMappingURL=groupBy.js.map - if (range instanceof Comparator) { - return new Range(range.value, options) - } +/***/ }), - if (!(this instanceof Range)) { - return new Range(range, options) - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ignoreElements; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - // 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() +function ignoreElements() { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, _util_noop__WEBPACK_IMPORTED_MODULE_2__[/* noop */ "a"])); + }); } +//# sourceMappingURL=ignoreElements.js.map -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 +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isEmpty; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); + + +function isEmpty() { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + subscriber.next(false); + subscriber.complete(); + }, function () { + subscriber.next(true); + subscriber.complete(); + })); + }); } +//# sourceMappingURL=isEmpty.js.map -Range.prototype.parseRange = function (range) { - var loose = this.options.loose - range = range.trim() - // `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) +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace) +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return joinAllInternals; }); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); +/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/pipe.js"); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); +/* harmony import */ var _toArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/toArray.js"); - // 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, this.options) - }, this).join(' ').split(/\s+/) - if (this.options.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, this.options) - }, this) - return set + +function joinAllInternals(joinFn, project) { + return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_2__[/* pipe */ "a"])(Object(_toArray__WEBPACK_IMPORTED_MODULE_4__[/* toArray */ "a"])(), Object(_mergeMap__WEBPACK_IMPORTED_MODULE_3__[/* mergeMap */ "a"])(function (sources) { return joinFn(sources); }), project ? Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_1__[/* mapOneOrManyArgs */ "a"])(project) : _util_identity__WEBPACK_IMPORTED_MODULE_0__[/* identity */ "a"]); } +//# sourceMappingURL=joinAllInternals.js.map -Range.prototype.intersects = function (range, options) { - 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, options) - }) - }) - }) - }) -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/last.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators -function toComparators (range, options) { - return new Range(range, options).set.map(function (comp) { - return comp.map(function (c) { - return c.value - }).join(' ').trim().split(' ') - }) -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return last; }); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeLast.js"); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -// 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, options) { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - 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, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceTilde(comp, options) - }).join(' ') -} -function replaceTilde (comp, options) { - var r = options.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) - 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 - }) +function last(predicate, defaultValue) { + var hasDefaultValue = arguments.length >= 2; + return function (source) { + return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__[/* identity */ "a"], Object(_takeLast__WEBPACK_IMPORTED_MODULE_2__[/* takeLast */ "a"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__[/* defaultIfEmpty */ "a"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__[/* throwIfEmpty */ "a"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"](); })); + }; } +//# sourceMappingURL=last.js.map -// ^ --> * (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, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceCaret(comp, options) - }).join(' ') -} +/***/ }), -function replaceCaret (comp, options) { - debug('caret', comp, options) - var r = options.loose ? re[CARETLOOSE] : re[CARET] - return comp.replace(r, function (_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr) - var ret +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/map.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - 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 (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' - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return map; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - debug('caret return', ret) - return ret - }) -} -function replaceXRanges (comp, options) { - debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map(function (comp) { - return replaceXRange(comp, options) - }).join(' ') +function map(project, thisArg) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var index = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + subscriber.next(project.call(thisArg, value, index++)); + })); + }); } +//# sourceMappingURL=map.js.map -function replaceXRange (comp, options) { - comp = comp.trim() - var r = options.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) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - 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 { - 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 - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mapTo; }); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); - 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' - } +function mapTo(value) { + return Object(_map__WEBPACK_IMPORTED_MODULE_0__[/* map */ "a"])(function () { return value; }); +} +//# sourceMappingURL=mapTo.js.map - debug('xRange return', ret) +/***/ }), - return ret - }) -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/materialize.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars (comp, options) { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], '') -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return materialize; }); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Notification.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -// 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() +function materialize() { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__[/* Notification */ "a"].createNext(value)); + }, function () { + subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__[/* Notification */ "a"].createComplete()); + subscriber.complete(); + }, function (err) { + subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__[/* Notification */ "a"].createError(err)); + subscriber.complete(); + })); + }); } +//# sourceMappingURL=materialize.js.map -// 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.options) - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/max.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return max; }); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); + + +function max(comparer) { + return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[/* reduce */ "a"])(Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); }); } +//# sourceMappingURL=max.js.map -function testSet (set, version, options) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } +/***/ }), - if (version.prerelease.length && !options.includePrerelease) { - // 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 (i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === ANY) { - continue - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/merge.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - 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 - } - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return merge; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); +/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); - // 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, options) { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} -exports.maxSatisfying = maxSatisfying -function maxSatisfying (versions, range, options) { - var max = null - var maxSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} -exports.minSatisfying = minSatisfying -function minSatisfying (versions, range, options) { - var min = null - var minSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } + +function merge() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; } - }) - return min + var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_4__[/* popScheduler */ "c"])(args); + var concurrent = Object(_util_args__WEBPACK_IMPORTED_MODULE_4__[/* popNumber */ "a"])(args, Infinity); + args = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__[/* argsOrArgArray */ "a"])(args); + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + Object(_mergeAll__WEBPACK_IMPORTED_MODULE_3__[/* mergeAll */ "a"])(concurrent)(Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__[/* from */ "a"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args)), scheduler)).subscribe(subscriber); + }); } +//# sourceMappingURL=merge.js.map -exports.minVersion = minVersion -function minVersion (range, loose) { - range = new Range(range, loose) +/***/ }), - var minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeAll; }); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - minver = null - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] - comparators.forEach(function (comparator) { - // Clone to avoid manipulating the comparator's semver object. - var compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!minver || gt(minver, compver)) { - minver = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error('Unexpected operation: ' + comparator.operator) - } - }) - } +function mergeAll(concurrent) { + if (concurrent === void 0) { concurrent = Infinity; } + return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__[/* identity */ "a"], concurrent); +} +//# sourceMappingURL=mergeAll.js.map - if (minver && range.test(minver)) { - return minver - } +/***/ }), - return null -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -exports.validRange = validRange -function validRange (range, options) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeInternals; }); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr -function ltr (version, range, options) { - return outside(version, range, '<', options) -} -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr -function gtr (version, range, options) { - return outside(version, range, '>', options) + +function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) { + var buffer = []; + var active = 0; + var index = 0; + var isComplete = false; + var checkComplete = function () { + if (isComplete && !buffer.length && !active) { + subscriber.complete(); + } + }; + var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); }; + var doInnerSub = function (value) { + expand && subscriber.next(value); + active++; + var innerComplete = false; + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(project(value, index++)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (innerValue) { + onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue); + if (expand) { + outerNext(innerValue); + } + else { + subscriber.next(innerValue); + } + }, function () { + innerComplete = true; + }, undefined, function () { + if (innerComplete) { + try { + active--; + var _loop_1 = function () { + var bufferedValue = buffer.shift(); + if (innerSubScheduler) { + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__[/* executeSchedule */ "a"])(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); }); + } + else { + doInnerSub(bufferedValue); + } + }; + while (buffer.length && active < concurrent) { + _loop_1(); + } + checkComplete(); + } + catch (err) { + subscriber.error(err); + } + } + })); + }; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, outerNext, function () { + isComplete = true; + checkComplete(); + })); + return function () { + additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer(); + }; } +//# sourceMappingURL=mergeInternals.js.map -exports.outside = outside -function outside (version, range, hilo, options) { - version = new SemVer(version, options) - range = new Range(range, options) +/***/ }), - 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 ">"') - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // If it satisifes the range it is not outside - if (satisfies(version, range, options)) { - return false - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeMap; }); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - // 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, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - 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 +function mergeMap(project, resultSelector, concurrent) { + if (concurrent === void 0) { concurrent = Infinity; } + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_4__[/* isFunction */ "a"])(resultSelector)) { + return mergeMap(function (a, i) { return Object(_map__WEBPACK_IMPORTED_MODULE_0__[/* map */ "a"])(function (b, ii) { return resultSelector(a, b, i, ii); })(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(project(a, i))); }, concurrent); } - - // 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 + else if (typeof resultSelector === 'number') { + concurrent = resultSelector; } - } - return true -} - -exports.prerelease = prerelease -function prerelease (version, options) { - var parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} - -exports.intersects = intersects -function intersects (r1, r2, options) { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2) + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_3__[/* mergeInternals */ "a"])(source, subscriber, project, concurrent); }); } +//# sourceMappingURL=mergeMap.js.map -exports.coerce = coerce -function coerce (version) { - if (version instanceof SemVer) { - return version - } +/***/ }), - if (typeof version !== 'string') { - return null - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var match = version.match(re[COERCE]) +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeMapTo; }); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - if (match == null) { - return null - } - return parse(match[1] + - '.' + (match[2] || '0') + - '.' + (match[3] || '0')) +function mergeMapTo(innerObservable, resultSelector, concurrent) { + if (concurrent === void 0) { concurrent = Infinity; } + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(resultSelector)) { + return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(function () { return innerObservable; }, resultSelector, concurrent); + } + if (typeof resultSelector === 'number') { + concurrent = resultSelector; + } + return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(function () { return innerObservable; }, concurrent); } - +//# sourceMappingURL=mergeMapTo.js.map /***/ }), -/***/ "../../node_modules/normalize-path/index.js": -/***/ (function(module, exports) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/*! - * normalize-path - * - * Copyright (c) 2014-2018, Jon Schlinkert. - * Released under the MIT License. - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeScan; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js"); -module.exports = function(path, stripTrailing) { - if (typeof path !== 'string') { - throw new TypeError('expected path to be a string'); - } - if (path === '\\' || path === '/') return '/'; +function mergeScan(accumulator, seed, concurrent) { + if (concurrent === void 0) { concurrent = Infinity; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var state = seed; + return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_1__[/* mergeInternals */ "a"])(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) { + state = value; + }, false, undefined, function () { return (state = null); }); + }); +} +//# sourceMappingURL=mergeScan.js.map - var len = path.length; - if (len <= 1) return path; +/***/ }), - // ensure that win32 namespaces has two leading slashes, so that the path is - // handled properly by the win32 version of path.parse() after being normalized - // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces - var prefix = ''; - if (len > 4 && path[3] === '\\') { - var ch = path[2]; - if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') { - path = path.slice(2); - prefix = '//'; - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var segs = path.split(/[/\\]+/); - if (stripTrailing !== false && segs[segs.length - 1] === '') { - segs.pop(); - } - return prefix + segs.join('/'); -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeWith; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/merge.js"); +function mergeWith() { + var otherSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherSources[_i] = arguments[_i]; + } + return _merge__WEBPACK_IMPORTED_MODULE_1__[/* merge */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherSources))); +} +//# sourceMappingURL=mergeWith.js.map + /***/ }), -/***/ "../../node_modules/npm-run-path/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/min.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return min; }); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -const path = __webpack_require__("path"); -const pathKey = __webpack_require__("../../node_modules/npm-run-path/node_modules/path-key/index.js"); -const npmRunPath = options => { - options = { - cwd: process.cwd(), - path: process.env[pathKey()], - execPath: process.execPath, - ...options - }; +function min(comparer) { + return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[/* reduce */ "a"])(Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); }); +} +//# sourceMappingURL=min.js.map - let previous; - let cwdPath = path.resolve(options.cwd); - const result = []; +/***/ }), - while (previous !== cwdPath) { - result.push(path.join(cwdPath, 'node_modules/.bin')); - previous = cwdPath; - cwdPath = path.resolve(cwdPath, '..'); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // Ensure the running `node` binary is used - const execPathDir = path.resolve(options.cwd, options.execPath, '..'); - result.push(execPathDir); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return multicast; }); +/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _connect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/connect.js"); - return result.concat(options.path).join(path.delimiter); -}; -module.exports = npmRunPath; -// TODO: Remove this for the next major release -module.exports.default = npmRunPath; -module.exports.env = options => { - options = { - env: process.env, - ...options - }; +function multicast(subjectOrSubjectFactory, selector) { + var subjectFactory = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; }; + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(selector)) { + return Object(_connect__WEBPACK_IMPORTED_MODULE_2__[/* connect */ "a"])(selector, { + connector: subjectFactory, + }); + } + return function (source) { return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__[/* ConnectableObservable */ "a"](source, subjectFactory); }; +} +//# sourceMappingURL=multicast.js.map - const env = {...options.env}; - const path = pathKey({env}); +/***/ }), + +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return observeOn; }); +/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - options.path = env[path]; - env[path] = module.exports(options); - return env; -}; +function observeOn(scheduler, delay) { + if (delay === void 0) { delay = 0; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { return subscriber.error(err); }, delay); })); + }); +} +//# sourceMappingURL=observeOn.js.map /***/ }), -/***/ "../../node_modules/npm-run-path/node_modules/path-key/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return onErrorResumeNext; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -const pathKey = (options = {}) => { - const environment = options.env || process.env; - const platform = options.platform || process.platform; - if (platform !== 'win32') { - return 'PATH'; - } - return Object.keys(environment).find(key => key.toUpperCase() === 'PATH') || 'Path'; -}; -module.exports = pathKey; -// TODO: Remove this for the next major release -module.exports.default = pathKey; +function onErrorResumeNext() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + var nextSources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__[/* argsOrArgArray */ "a"])(sources); + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var remaining = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(nextSources)); + var subscribeNext = function () { + if (!subscriber.closed) { + if (remaining.length > 0) { + var nextSource = void 0; + try { + nextSource = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(remaining.shift()); + } + catch (err) { + subscribeNext(); + return; + } + var innerSub = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"], _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"]); + nextSource.subscribe(innerSub); + innerSub.add(subscribeNext); + } + else { + subscriber.complete(); + } + } + }; + subscribeNext(); + }); +} +//# sourceMappingURL=onErrorResumeNext.js.map /***/ }), -/***/ "../../node_modules/object-copy/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pairwise; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -var typeOf = __webpack_require__("../../node_modules/object-copy/node_modules/kind-of/index.js"); -var copyDescriptor = __webpack_require__("../../node_modules/copy-descriptor/index.js"); -var define = __webpack_require__("../../node_modules/define-property/index.js"); - -/** - * Copy static properties, prototype properties, and descriptors from one object to another. - * - * ```js - * function App() {} - * var proto = App.prototype; - * App.prototype.set = function() {}; - * App.prototype.get = function() {}; - * - * var obj = {}; - * copy(obj, proto); - * ``` - * @param {Object} `receiver` - * @param {Object} `provider` - * @param {String|Array} `omit` One or more properties to omit - * @return {Object} - * @api public - */ - -function copy(receiver, provider, omit) { - if (!isObject(receiver)) { - throw new TypeError('expected receiving object to be an object.'); - } - if (!isObject(provider)) { - throw new TypeError('expected providing object to be an object.'); - } +function pairwise() { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var prev; + var hasPrev = false; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var p = prev; + prev = value; + hasPrev && subscriber.next([p, value]); + hasPrev = true; + })); + }); +} +//# sourceMappingURL=pairwise.js.map - var props = nativeKeys(provider); - var keys = Object.keys(provider); - var len = props.length; - omit = arrayify(omit); +/***/ }), - while (len--) { - var key = props[len]; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/partition.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (has(keys, key)) { - define(receiver, key, provider[key]); - } else if (!(key in receiver) && !has(omit, key)) { - copyDescriptor(receiver, provider, key); - } - } -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return partition; }); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/not.js"); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); -/** - * Return true if the given value is an object or function - */ -function isObject(val) { - return typeOf(val) === 'object' || typeof val === 'function'; +function partition(predicate, thisArg) { + return function (source) { + return [Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(predicate, thisArg)(source), Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__[/* not */ "a"])(predicate, thisArg))(source)]; + }; } +//# sourceMappingURL=partition.js.map -/** - * Returns true if an array has any of the given elements, or an - * object has any of the give keys. - * - * ```js - * has(['a', 'b', 'c'], 'c'); - * //=> true - * - * has(['a', 'b', 'c'], ['c', 'z']); - * //=> true - * - * has({a: 'b', c: 'd'}, ['c', 'z']); - * //=> true - * ``` - * @param {Object} `obj` - * @param {String|Array} `val` - * @return {Boolean} - */ - -function has(obj, val) { - val = arrayify(val); - var len = val.length; +/***/ }), - if (isObject(obj)) { - for (var key in obj) { - if (val.indexOf(key) > -1) { - return true; - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/pluck.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var keys = nativeKeys(obj); - return has(keys, val); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pluck; }); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); - if (Array.isArray(obj)) { - var arr = obj; - while (len--) { - if (arr.indexOf(val[len]) > -1) { - return true; - } +function pluck() { + var properties = []; + for (var _i = 0; _i < arguments.length; _i++) { + properties[_i] = arguments[_i]; } - return false; - } - - throw new TypeError('expected an array or object.'); + var length = properties.length; + if (length === 0) { + throw new Error('list of properties cannot be empty.'); + } + return Object(_map__WEBPACK_IMPORTED_MODULE_0__[/* map */ "a"])(function (x) { + var currentProp = x; + for (var i = 0; i < length; i++) { + var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]]; + if (typeof p !== 'undefined') { + currentProp = p; + } + else { + return undefined; + } + } + return currentProp; + }); } +//# sourceMappingURL=pluck.js.map -/** - * Cast the given value to an array. - * - * ```js - * arrayify('foo'); - * //=> ['foo'] - * - * arrayify(['foo']); - * //=> ['foo'] - * ``` - * - * @param {String|Array} `val` - * @return {Array} - */ +/***/ }), -function arrayify(val) { - return val ? (Array.isArray(val) ? val : [val]) : []; -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/publish.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Returns true if a value has a `contructor` - * - * ```js - * hasConstructor({}); - * //=> true - * - * hasConstructor(Object.create(null)); - * //=> false - * ``` - * @param {Object} `value` - * @return {Boolean} - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return publish; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js"); +/* harmony import */ var _connect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/connect.js"); -function hasConstructor(val) { - return isObject(val) && typeof val.constructor !== 'undefined'; -} -/** - * Get the native `ownPropertyNames` from the constructor of the - * given `object`. An empty array is returned if the object does - * not have a constructor. - * - * ```js - * nativeKeys({a: 'b', b: 'c', c: 'd'}) - * //=> ['a', 'b', 'c'] - * - * nativeKeys(function(){}) - * //=> ['length', 'caller'] - * ``` - * - * @param {Object} `obj` Object that has a `constructor`. - * @return {Array} Array of keys. - */ -function nativeKeys(val) { - if (!hasConstructor(val)) return []; - return Object.getOwnPropertyNames(val); +function publish(selector) { + return selector ? function (source) { return Object(_connect__WEBPACK_IMPORTED_MODULE_2__[/* connect */ "a"])(selector)(source); } : function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__[/* multicast */ "a"])(new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"]())(source); }; } +//# sourceMappingURL=publish.js.map -/** - * Expose `copy` - */ +/***/ }), -module.exports = copy; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Expose `copy.has` for tests - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return publishBehavior; }); +/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js"); +/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"); -module.exports.has = has; +function publishBehavior(initialValue) { + return function (source) { + var subject = new _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__[/* BehaviorSubject */ "a"](initialValue); + return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__[/* ConnectableObservable */ "a"](source, function () { return subject; }); + }; +} +//# sourceMappingURL=publishBehavior.js.map /***/ }), -/***/ "../../node_modules/object-copy/node_modules/kind-of/index.js": -/***/ (function(module, exports, __webpack_require__) { - -var isBuffer = __webpack_require__("../../node_modules/is-buffer/index.js"); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/publishLast.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return publishLast; }); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js"); +/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"); - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - // other objects - var type = toString.call(val); +function publishLast() { + return function (source) { + var subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__[/* AsyncSubject */ "a"](); + return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__[/* ConnectableObservable */ "a"](source, function () { return subject; }); + }; +} +//# sourceMappingURL=publishLast.js.map - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } +/***/ }), - // buffer - if (isBuffer(val)) { - return 'buffer'; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return publishReplay; }); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js"); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - // must be a plain object - return 'object'; -}; +function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) { + if (selectorOrScheduler && !Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[/* isFunction */ "a"])(selectorOrScheduler)) { + timestampProvider = selectorOrScheduler; + } + var selector = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[/* isFunction */ "a"])(selectorOrScheduler) ? selectorOrScheduler : undefined; + return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__[/* multicast */ "a"])(new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__[/* ReplaySubject */ "a"](bufferSize, windowTime, timestampProvider), selector)(source); }; +} +//# sourceMappingURL=publishReplay.js.map /***/ }), -/***/ "../../node_modules/object-visit/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/race.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/*! - * object-visit - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return race; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); +/* harmony import */ var _raceWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/raceWith.js"); -var isObject = __webpack_require__("../../node_modules/isobject/index.js"); -module.exports = function visit(thisArg, method, target, val) { - if (!isObject(thisArg) && typeof thisArg !== 'function') { - throw new Error('object-visit expects `thisArg` to be an object.'); - } +function race() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return _raceWith__WEBPACK_IMPORTED_MODULE_2__[/* raceWith */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_1__[/* argsOrArgArray */ "a"])(args)))); +} +//# sourceMappingURL=race.js.map - if (typeof method !== 'string') { - throw new Error('object-visit expects `method` name to be a string'); - } +/***/ }), - if (typeof thisArg[method] !== 'function') { - return thisArg; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/raceWith.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return raceWith; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/race.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - var args = [].slice.call(arguments, 3); - target = target || {}; - for (var key in target) { - var arr = [key, target[key]].concat(args); - thisArg[method].apply(thisArg, arr); - } - return thisArg; -}; +function raceWith() { + var otherSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherSources[_i] = arguments[_i]; + } + return !otherSources.length + ? _util_identity__WEBPACK_IMPORTED_MODULE_3__[/* identity */ "a"] + : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + Object(_observable_race__WEBPACK_IMPORTED_MODULE_1__[/* raceInit */ "b"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherSources)))(subscriber); + }); +} +//# sourceMappingURL=raceWith.js.map + /***/ }), -/***/ "../../node_modules/object.pick/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/*! - * object.pick - * - * Copyright (c) 2014-2015 Jon Schlinkert, contributors. - * Licensed under the MIT License - */ - +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return reduce; }); +/* harmony import */ var _scanInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -var isObject = __webpack_require__("../../node_modules/isobject/index.js"); +function reduce(accumulator, seed) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(Object(_scanInternals__WEBPACK_IMPORTED_MODULE_0__[/* scanInternals */ "a"])(accumulator, seed, arguments.length >= 2, false, true)); +} +//# sourceMappingURL=reduce.js.map -module.exports = function pick(obj, keys) { - if (!isObject(obj) && typeof obj !== 'function') { - return {}; - } +/***/ }), - var res = {}; - if (typeof keys === 'string') { - if (keys in obj) { - res[keys] = obj[keys]; - } - return res; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - var len = keys.length; - var idx = -1; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return refCount; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - while (++idx < len) { - var key = keys[idx]; - if (key in obj) { - res[key] = obj[key]; - } - } - return res; -}; +function refCount() { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var connection = null; + source._refCount++; + var refCounter = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, undefined, undefined, function () { + if (!source || source._refCount <= 0 || 0 < --source._refCount) { + connection = null; + return; + } + var sharedConnection = source._connection; + var conn = connection; + connection = null; + if (sharedConnection && (!conn || sharedConnection === conn)) { + sharedConnection.unsubscribe(); + } + subscriber.unsubscribe(); + }); + source.subscribe(refCounter); + if (!refCounter.closed) { + connection = source.connect(); + } + }); +} +//# sourceMappingURL=refCount.js.map /***/ }), -/***/ "../../node_modules/once/once.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/repeat.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -var wrappy = __webpack_require__("../../node_modules/wrappy/wrappy.js") -module.exports = wrappy(once) -module.exports.strict = wrappy(onceStrict) +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return repeat; }); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); -once.proto = once(function () { - Object.defineProperty(Function.prototype, 'once', { - value: function () { - return once(this) - }, - configurable: true - }) - Object.defineProperty(Function.prototype, 'onceStrict', { - value: function () { - return onceStrict(this) - }, - configurable: true - }) -}) -function once (fn) { - var f = function () { - if (f.called) return f.value - f.called = true - return f.value = fn.apply(this, arguments) - } - f.called = false - return f -} -function onceStrict (fn) { - var f = function () { - if (f.called) - throw new Error(f.onceError) - f.called = true - return f.value = fn.apply(this, arguments) - } - var name = fn.name || 'Function wrapped with `once`' - f.onceError = name + " shouldn't be called more than once" - f.called = false - return f -} +function repeat(countOrConfig) { + var _a; + var count = Infinity; + var delay; + if (countOrConfig != null) { + if (typeof countOrConfig === 'object') { + (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay); + } + else { + count = countOrConfig; + } + } + return count <= 0 + ? function () { return _observable_empty__WEBPACK_IMPORTED_MODULE_0__[/* EMPTY */ "a"]; } + : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var soFar = 0; + var sourceSub; + var resubscribe = function () { + sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe(); + sourceSub = null; + if (delay != null) { + var notifier = typeof delay === 'number' ? Object(_observable_timer__WEBPACK_IMPORTED_MODULE_4__[/* timer */ "a"])(delay) : Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(delay(soFar)); + var notifierSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + notifierSubscriber_1.unsubscribe(); + subscribeToSource(); + }); + notifier.subscribe(notifierSubscriber_1); + } + else { + subscribeToSource(); + } + }; + var subscribeToSource = function () { + var syncUnsub = false; + sourceSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, function () { + if (++soFar < count) { + if (sourceSub) { + resubscribe(); + } + else { + syncUnsub = true; + } + } + else { + subscriber.complete(); + } + })); + if (syncUnsub) { + resubscribe(); + } + }; + subscribeToSource(); + }); +} +//# sourceMappingURL=repeat.js.map /***/ }), -/***/ "../../node_modules/onetime/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return repeatWhen; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -const mimicFn = __webpack_require__("../../node_modules/mimic-fn/index.js"); - -const calledFunctions = new WeakMap(); - -const onetime = (function_, options = {}) => { - if (typeof function_ !== 'function') { - throw new TypeError('Expected a function'); - } - let returnValue; - let callCount = 0; - const functionName = function_.displayName || function_.name || ''; - const onetime = function (...arguments_) { - calledFunctions.set(onetime, ++callCount); +function repeatWhen(notifier) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var innerSub; + var syncResub = false; + var completions$; + var isNotifierComplete = false; + var isMainComplete = false; + var checkComplete = function () { return isMainComplete && isNotifierComplete && (subscriber.complete(), true); }; + var getCompletionSubject = function () { + if (!completions$) { + completions$ = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); + notifier(completions$).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + if (innerSub) { + subscribeForRepeatWhen(); + } + else { + syncResub = true; + } + }, function () { + isNotifierComplete = true; + checkComplete(); + })); + } + return completions$; + }; + var subscribeForRepeatWhen = function () { + isMainComplete = false; + innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, function () { + isMainComplete = true; + !checkComplete() && getCompletionSubject().next(); + })); + if (syncResub) { + innerSub.unsubscribe(); + innerSub = null; + syncResub = false; + subscribeForRepeatWhen(); + } + }; + subscribeForRepeatWhen(); + }); +} +//# sourceMappingURL=repeatWhen.js.map - if (callCount === 1) { - returnValue = function_.apply(this, arguments_); - function_ = null; - } else if (options.throw === true) { - throw new Error(`Function \`${functionName}\` can only be called once`); - } +/***/ }), - return returnValue; - }; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/retry.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - mimicFn(onetime, function_); - calledFunctions.set(onetime, callCount); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return retry; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - return onetime; -}; -module.exports = onetime; -// TODO: Remove this for the next major release -module.exports.default = onetime; -module.exports.callCount = function_ => { - if (!calledFunctions.has(function_)) { - throw new Error(`The given function \`${function_.name}\` is not wrapped by the \`onetime\` package`); - } - return calledFunctions.get(function_); -}; +function retry(configOrCount) { + if (configOrCount === void 0) { configOrCount = Infinity; } + var config; + if (configOrCount && typeof configOrCount === 'object') { + config = configOrCount; + } + else { + config = { + count: configOrCount, + }; + } + var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b; + return count <= 0 + ? _util_identity__WEBPACK_IMPORTED_MODULE_2__[/* identity */ "a"] + : Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var soFar = 0; + var innerSub; + var subscribeForRetry = function () { + var syncUnsub = false; + innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + if (resetOnSuccess) { + soFar = 0; + } + subscriber.next(value); + }, undefined, function (err) { + if (soFar++ < count) { + var resub_1 = function () { + if (innerSub) { + innerSub.unsubscribe(); + innerSub = null; + subscribeForRetry(); + } + else { + syncUnsub = true; + } + }; + if (delay != null) { + var notifier = typeof delay === 'number' ? Object(_observable_timer__WEBPACK_IMPORTED_MODULE_3__[/* timer */ "a"])(delay) : Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__[/* innerFrom */ "a"])(delay(err, soFar)); + var notifierSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + notifierSubscriber_1.unsubscribe(); + resub_1(); + }, function () { + subscriber.complete(); + }); + notifier.subscribe(notifierSubscriber_1); + } + else { + resub_1(); + } + } + else { + subscriber.error(err); + } + })); + if (syncUnsub) { + innerSub.unsubscribe(); + innerSub = null; + subscribeForRetry(); + } + }; + subscribeForRetry(); + }); +} +//# sourceMappingURL=retry.js.map /***/ }), -/***/ "../../node_modules/ora/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return retryWhen; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -const readline = __webpack_require__("readline"); -const chalk = __webpack_require__("../../node_modules/ora/node_modules/chalk/source/index.js"); -const cliCursor = __webpack_require__("../../node_modules/cli-cursor/index.js"); -const cliSpinners = __webpack_require__("../../node_modules/cli-spinners/index.js"); -const logSymbols = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/index.js"); -const stripAnsi = __webpack_require__("../../node_modules/strip-ansi/index.js"); -const wcwidth = __webpack_require__("../../node_modules/wcwidth/index.js"); -const isInteractive = __webpack_require__("../../node_modules/is-interactive/index.js"); -const MuteStream = __webpack_require__("../../node_modules/mute-stream/mute.js"); -const TEXT = Symbol('text'); -const PREFIX_TEXT = Symbol('prefixText'); -const ASCII_ETX_CODE = 0x03; // Ctrl+C emits this code +function retryWhen(notifier) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var innerSub; + var syncResub = false; + var errors$; + var subscribeForRetryWhen = function () { + innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, undefined, function (err) { + if (!errors$) { + errors$ = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); + notifier(errors$).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + return innerSub ? subscribeForRetryWhen() : (syncResub = true); + })); + } + if (errors$) { + errors$.next(err); + } + })); + if (syncResub) { + innerSub.unsubscribe(); + innerSub = null; + syncResub = false; + subscribeForRetryWhen(); + } + }; + subscribeForRetryWhen(); + }); +} +//# sourceMappingURL=retryWhen.js.map -class StdinDiscarder { - constructor() { - this.requests = 0; +/***/ }), - this.mutedStream = new MuteStream(); - this.mutedStream.pipe(process.stdout); - this.mutedStream.mute(); +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/sample.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const self = this; - this.ourEmit = function (event, data, ...args) { - const {stdin} = process; - if (self.requests > 0 || stdin.emit === self.ourEmit) { - if (event === 'keypress') { // Fixes readline behavior - return; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return sample; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - if (event === 'data' && data.includes(ASCII_ETX_CODE)) { - process.emit('SIGINT'); - } - Reflect.apply(self.oldEmit, this, [event, data, ...args]); - } else { - Reflect.apply(process.stdin.emit, this, [event, data, ...args]); - } - }; - } - start() { - this.requests++; +function sample(notifier) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var hasValue = false; + var lastValue = null; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + hasValue = true; + lastValue = value; + })); + notifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + if (hasValue) { + hasValue = false; + var value = lastValue; + lastValue = null; + subscriber.next(value); + } + }, _util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"])); + }); +} +//# sourceMappingURL=sample.js.map - if (this.requests === 1) { - this.realStart(); - } - } +/***/ }), - stop() { - if (this.requests <= 0) { - throw new Error('`stop` called more times than `start`'); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - this.requests--; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return sampleTime; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _sample__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sample.js"); +/* harmony import */ var _observable_interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/interval.js"); - if (this.requests === 0) { - this.realStop(); - } - } - realStart() { - // No known way to make it work reliably on Windows - if (process.platform === 'win32') { - return; - } - this.rl = readline.createInterface({ - input: process.stdin, - output: this.mutedStream - }); +function sampleTime(period, scheduler) { + if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } + return Object(_sample__WEBPACK_IMPORTED_MODULE_1__[/* sample */ "a"])(Object(_observable_interval__WEBPACK_IMPORTED_MODULE_2__[/* interval */ "a"])(period, scheduler)); +} +//# sourceMappingURL=sampleTime.js.map - this.rl.on('SIGINT', () => { - if (process.listenerCount('SIGINT') === 0) { - process.emit('SIGINT'); - } else { - this.rl.close(); - process.kill(process.pid, 'SIGINT'); - } - }); - } +/***/ }), - realStop() { - if (process.platform === 'win32') { - return; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/scan.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - this.rl.close(); - this.rl = undefined; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scan; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _scanInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js"); + + +function scan(accumulator, seed) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(Object(_scanInternals__WEBPACK_IMPORTED_MODULE_1__[/* scanInternals */ "a"])(accumulator, seed, arguments.length >= 2, true)); } +//# sourceMappingURL=scan.js.map -let stdinDiscarder; +/***/ }), -class Ora { - constructor(options) { - if (!stdinDiscarder) { - stdinDiscarder = new StdinDiscarder(); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (typeof options === 'string') { - options = { - text: options - }; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scanInternals; }); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - this.options = { - text: '', - color: 'cyan', - stream: process.stderr, - discardStdin: true, - ...options - }; +function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) { + return function (source, subscriber) { + var hasState = hasSeed; + var state = seed; + var index = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_0__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var i = index++; + state = hasState + ? + accumulator(state, value, i) + : + ((hasState = true), value); + emitOnNext && subscriber.next(state); + }, emitBeforeComplete && + (function () { + hasState && subscriber.next(state); + subscriber.complete(); + }))); + }; +} +//# sourceMappingURL=scanInternals.js.map - this.spinner = this.options.spinner; +/***/ }), - this.color = this.options.color; - this.hideCursor = this.options.hideCursor !== false; - this.interval = this.options.interval || this.spinner.interval || 100; - this.stream = this.options.stream; - this.id = undefined; - this.isEnabled = typeof this.options.isEnabled === 'boolean' ? this.options.isEnabled : isInteractive({stream: this.stream}); +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // Set *after* `this.stream` - this.text = this.options.text; - this.prefixText = this.options.prefixText; - this.linesToClear = 0; - this.indent = this.options.indent; - this.discardStdin = this.options.discardStdin; - this.isDiscardingStdin = false; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return sequenceEqual; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - get indent() { - return this._indent; - } - set indent(indent = 0) { - if (!(indent >= 0 && Number.isInteger(indent))) { - throw new Error('The `indent` option must be an integer from 0 and up'); - } +function sequenceEqual(compareTo, comparator) { + if (comparator === void 0) { comparator = function (a, b) { return a === b; }; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var aState = createState(); + var bState = createState(); + var emit = function (isEqual) { + subscriber.next(isEqual); + subscriber.complete(); + }; + var createSubscriber = function (selfState, otherState) { + var sequenceEqualSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (a) { + var buffer = otherState.buffer, complete = otherState.complete; + if (buffer.length === 0) { + complete ? emit(false) : selfState.buffer.push(a); + } + else { + !comparator(a, buffer.shift()) && emit(false); + } + }, function () { + selfState.complete = true; + var complete = otherState.complete, buffer = otherState.buffer; + complete && emit(buffer.length === 0); + sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe(); + }); + return sequenceEqualSubscriber; + }; + source.subscribe(createSubscriber(aState, bState)); + compareTo.subscribe(createSubscriber(bState, aState)); + }); +} +function createState() { + return { + buffer: [], + complete: false, + }; +} +//# sourceMappingURL=sequenceEqual.js.map - this._indent = indent; - } +/***/ }), - _updateInterval(interval) { - if (interval !== undefined) { - this.interval = interval; - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/share.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - get spinner() { - return this._spinner; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return share; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); +/* harmony import */ var _operators_take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - set spinner(spinner) { - this.frameIndex = 0; - if (typeof spinner === 'object') { - if (spinner.frames === undefined) { - throw new Error('The given spinner must have a `frames` property'); - } - this._spinner = spinner; - } else if (process.platform === 'win32') { - this._spinner = cliSpinners.line; - } else if (spinner === undefined) { - // Set default spinner - this._spinner = cliSpinners.dots; - } else if (cliSpinners[spinner]) { - this._spinner = cliSpinners[spinner]; - } else { - throw new Error(`There is no built-in spinner named '${spinner}'. See https://github.com/sindresorhus/cli-spinners/blob/master/spinners.json for a full list.`); - } - this._updateInterval(this._spinner.interval); - } - get text() { - return this[TEXT]; - } - get prefixText() { - return this[PREFIX_TEXT]; - } +function share(options) { + if (options === void 0) { options = {}; } + var _a = options.connector, connector = _a === void 0 ? function () { return new _Subject__WEBPACK_IMPORTED_MODULE_3__[/* Subject */ "a"](); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d; + return function (wrapperSource) { + var connection = null; + var resetConnection = null; + var subject = null; + var refCount = 0; + var hasCompleted = false; + var hasErrored = false; + var cancelReset = function () { + resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe(); + resetConnection = null; + }; + var reset = function () { + cancelReset(); + connection = subject = null; + hasCompleted = hasErrored = false; + }; + var resetAndUnsubscribe = function () { + var conn = connection; + reset(); + conn === null || conn === void 0 ? void 0 : conn.unsubscribe(); + }; + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_5__[/* operate */ "b"])(function (source, subscriber) { + refCount++; + if (!hasErrored && !hasCompleted) { + cancelReset(); + } + var dest = (subject = subject !== null && subject !== void 0 ? subject : connector()); + subscriber.add(function () { + refCount--; + if (refCount === 0 && !hasErrored && !hasCompleted) { + resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero); + } + }); + dest.subscribe(subscriber); + if (!connection) { + connection = new _Subscriber__WEBPACK_IMPORTED_MODULE_4__[/* SafeSubscriber */ "a"]({ + next: function (value) { return dest.next(value); }, + error: function (err) { + hasErrored = true; + cancelReset(); + resetConnection = handleReset(reset, resetOnError, err); + dest.error(err); + }, + complete: function () { + hasCompleted = true; + cancelReset(); + resetConnection = handleReset(reset, resetOnComplete); + dest.complete(); + }, + }); + Object(_observable_from__WEBPACK_IMPORTED_MODULE_1__[/* from */ "a"])(source).subscribe(connection); + } + })(wrapperSource); + }; +} +function handleReset(reset, on) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + if (on === true) { + reset(); + return null; + } + if (on === false) { + return null; + } + return on.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))).pipe(Object(_operators_take__WEBPACK_IMPORTED_MODULE_2__[/* take */ "a"])(1)) + .subscribe(function () { return reset(); }); +} +//# sourceMappingURL=share.js.map - get isSpinning() { - return this.id !== undefined; - } +/***/ }), - updateLineCount() { - const columns = this.stream.columns || 80; - const fullPrefixText = (typeof this[PREFIX_TEXT] === 'string') ? this[PREFIX_TEXT] + '-' : ''; - this.lineCount = stripAnsi(fullPrefixText + '--' + this[TEXT]).split('\n').reduce((count, line) => { - return count + Math.max(1, Math.ceil(wcwidth(line) / columns)); - }, 0); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - set text(value) { - this[TEXT] = value; - this.updateLineCount(); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return shareReplay; }); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js"); +/* harmony import */ var _share__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/share.js"); - set prefixText(value) { - this[PREFIX_TEXT] = value; - this.updateLineCount(); - } - frame() { - const {frames} = this.spinner; - let frame = frames[this.frameIndex]; +function shareReplay(configOrBufferSize, windowTime, scheduler) { + var _a, _b, _c; + var bufferSize; + var refCount = false; + if (configOrBufferSize && typeof configOrBufferSize === 'object') { + (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler); + } + else { + bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity; + } + return Object(_share__WEBPACK_IMPORTED_MODULE_1__[/* share */ "a"])({ + connector: function () { return new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__[/* ReplaySubject */ "a"](bufferSize, windowTime, scheduler); }, + resetOnError: true, + resetOnComplete: false, + resetOnRefCountZero: refCount, + }); +} +//# sourceMappingURL=shareReplay.js.map - if (this.color) { - frame = chalk[this.color](frame); - } +/***/ }), - this.frameIndex = ++this.frameIndex % frames.length; - const fullPrefixText = (typeof this.prefixText === 'string' && this.prefixText !== '') ? this.prefixText + ' ' : ''; - const fullText = typeof this.text === 'string' ? ' ' + this.text : ''; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/single.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return fullPrefixText + frame + fullText; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return single; }); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); +/* harmony import */ var _util_SequenceError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js"); +/* harmony import */ var _util_NotFoundError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - clear() { - if (!this.isEnabled || !this.stream.isTTY) { - return this; - } - for (let i = 0; i < this.linesToClear; i++) { - if (i > 0) { - this.stream.moveCursor(0, -1); - } - this.stream.clearLine(); - this.stream.cursorTo(this.indent); - } - this.linesToClear = 0; - return this; - } +function single(predicate) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__[/* operate */ "b"])(function (source, subscriber) { + var hasValue = false; + var singleValue; + var seenValue = false; + var index = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + seenValue = true; + if (!predicate || predicate(value, index++, source)) { + hasValue && subscriber.error(new _util_SequenceError__WEBPACK_IMPORTED_MODULE_1__[/* SequenceError */ "a"]('Too many matching values')); + hasValue = true; + singleValue = value; + } + }, function () { + if (hasValue) { + subscriber.next(singleValue); + subscriber.complete(); + } + else { + subscriber.error(seenValue ? new _util_NotFoundError__WEBPACK_IMPORTED_MODULE_2__[/* NotFoundError */ "a"]('No matching values') : new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"]()); + } + })); + }); +} +//# sourceMappingURL=single.js.map - render() { - this.clear(); - this.stream.write(this.frame()); - this.linesToClear = this.lineCount; +/***/ }), - return this; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/skip.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - start(text) { - if (text) { - this.text = text; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return skip; }); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); - if (!this.isEnabled) { - if (this.text) { - this.stream.write(`- ${this.text}\n`); - } +function skip(count) { + return Object(_filter__WEBPACK_IMPORTED_MODULE_0__[/* filter */ "a"])(function (_, index) { return count <= index; }); +} +//# sourceMappingURL=skip.js.map - return this; - } +/***/ }), - if (this.isSpinning) { - return this; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/skipLast.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (this.hideCursor) { - cliCursor.hide(this.stream); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return skipLast; }); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - if (this.discardStdin && process.stdin.isTTY) { - this.isDiscardingStdin = true; - stdinDiscarder.start(); - } - this.render(); - this.id = setInterval(this.render.bind(this), this.interval); - return this; - } +function skipLast(skipCount) { + return skipCount <= 0 + ? + _util_identity__WEBPACK_IMPORTED_MODULE_0__[/* identity */ "a"] + : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var ring = new Array(skipCount); + var seen = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var valueIndex = seen++; + if (valueIndex < skipCount) { + ring[valueIndex] = value; + } + else { + var index = valueIndex % skipCount; + var oldValue = ring[index]; + ring[index] = value; + subscriber.next(oldValue); + } + })); + return function () { + ring = null; + }; + }); +} +//# sourceMappingURL=skipLast.js.map - stop() { - if (!this.isEnabled) { - return this; - } +/***/ }), - clearInterval(this.id); - this.id = undefined; - this.frameIndex = 0; - this.clear(); - if (this.hideCursor) { - cliCursor.show(this.stream); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (this.discardStdin && process.stdin.isTTY && this.isDiscardingStdin) { - stdinDiscarder.stop(); - this.isDiscardingStdin = false; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return skipUntil; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - return this; - } - succeed(text) { - return this.stopAndPersist({symbol: logSymbols.success, text}); - } - fail(text) { - return this.stopAndPersist({symbol: logSymbols.error, text}); - } - warn(text) { - return this.stopAndPersist({symbol: logSymbols.warning, text}); - } +function skipUntil(notifier) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var taking = false; + var skipSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe(); + taking = true; + }, _util_noop__WEBPACK_IMPORTED_MODULE_3__[/* noop */ "a"]); + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(notifier).subscribe(skipSubscriber); + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return taking && subscriber.next(value); })); + }); +} +//# sourceMappingURL=skipUntil.js.map - info(text) { - return this.stopAndPersist({symbol: logSymbols.info, text}); - } +/***/ }), - stopAndPersist(options = {}) { - const prefixText = options.prefixText || this.prefixText; - const fullPrefixText = (typeof prefixText === 'string' && prefixText !== '') ? prefixText + ' ' : ''; - const text = options.text || this.text; - const fullText = (typeof text === 'string') ? ' ' + text : ''; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - this.stop(); - this.stream.write(`${fullPrefixText}${options.symbol || ' '}${fullText}\n`); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return skipWhile; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - return this; - } -} -const oraFactory = function (options) { - return new Ora(options); -}; +function skipWhile(predicate) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var taking = false; + var index = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); })); + }); +} +//# sourceMappingURL=skipWhile.js.map -module.exports = oraFactory; +/***/ }), -module.exports.promise = (action, options) => { - // eslint-disable-next-line promise/prefer-await-to-then - if (typeof action.then !== 'function') { - throw new TypeError('Parameter `action` must be a Promise'); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/startWith.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const spinner = new Ora(options); - spinner.start(); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return startWith; }); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/concat.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - (async () => { - try { - await action; - spinner.succeed(); - } catch (_) { - spinner.fail(); - } - })(); - return spinner; -}; +function startWith() { + var values = []; + for (var _i = 0; _i < arguments.length; _i++) { + values[_i] = arguments[_i]; + } + var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_1__[/* popScheduler */ "c"])(values); + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + (scheduler ? Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__[/* concat */ "a"])(values, source, scheduler) : Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__[/* concat */ "a"])(values, source)).subscribe(subscriber); + }); +} +//# sourceMappingURL=startWith.js.map /***/ }), -/***/ "../../node_modules/ora/node_modules/chalk/source/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return subscribeOn; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -const ansiStyles = __webpack_require__("../../node_modules/ansi-styles/index.js"); -const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__("../../node_modules/supports-color/index.js"); -const { - stringReplaceAll, - stringEncaseCRLFWithFirstIndex -} = __webpack_require__("../../node_modules/ora/node_modules/chalk/source/util.js"); +function subscribeOn(scheduler, delay) { + if (delay === void 0) { delay = 0; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay)); + }); +} +//# sourceMappingURL=subscribeOn.js.map -// `supportsColor.level` → `ansiStyles.color[name]` mapping -const levelMapping = [ - 'ansi', - 'ansi', - 'ansi256', - 'ansi16m' -]; +/***/ }), -const styles = Object.create(null); +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/switchAll.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -const applyOptions = (object, options = {}) => { - if (options.level > 3 || options.level < 0) { - throw new Error('The `level` option should be an integer from 0 to 3'); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return switchAll; }); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - // Detect level if not set manually - const colorLevel = stdoutColor ? stdoutColor.level : 0; - object.level = options.level === undefined ? colorLevel : options.level; -}; -class ChalkClass { - constructor(options) { - return chalkFactory(options); - } +function switchAll() { + return Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__[/* switchMap */ "a"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__[/* identity */ "a"]); } +//# sourceMappingURL=switchAll.js.map -const chalkFactory = options => { - const chalk = {}; - applyOptions(chalk, options); - - chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_); +/***/ }), - Object.setPrototypeOf(chalk, Chalk.prototype); - Object.setPrototypeOf(chalk.template, chalk); +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - chalk.template.constructor = () => { - throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.'); - }; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return switchMap; }); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - chalk.template.Instance = ChalkClass; - return chalk.template; -}; -function Chalk(options) { - return chalkFactory(options); +function switchMap(project, resultSelector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var innerSubscriber = null; + var index = 0; + var isComplete = false; + var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); }; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe(); + var innerIndex = 0; + var outerIndex = index++; + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(project(value, outerIndex)).subscribe((innerSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () { + innerSubscriber = null; + checkComplete(); + }))); + }, function () { + isComplete = true; + checkComplete(); + })); + }); } +//# sourceMappingURL=switchMap.js.map -for (const [styleName, style] of Object.entries(ansiStyles)) { - styles[styleName] = { - get() { - const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty); - Object.defineProperty(this, styleName, {value: builder}); - return builder; - } - }; -} +/***/ }), -styles.visible = { - get() { - const builder = createBuilder(this, this._styler, true); - Object.defineProperty(this, 'visible', {value: builder}); - return builder; - } -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -const usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256']; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return switchMapTo; }); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -for (const model of usedModels) { - styles[model] = { - get() { - const {level} = this; - return function (...arguments_) { - const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler); - return createBuilder(this, styler, this._isEmpty); - }; - } - }; -} -for (const model of usedModels) { - const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); - styles[bgModel] = { - get() { - const {level} = this; - return function (...arguments_) { - const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler); - return createBuilder(this, styler, this._isEmpty); - }; - } - }; +function switchMapTo(innerObservable, resultSelector) { + return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(resultSelector) ? Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__[/* switchMap */ "a"])(function () { return innerObservable; }, resultSelector) : Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__[/* switchMap */ "a"])(function () { return innerObservable; }); } +//# sourceMappingURL=switchMapTo.js.map -const proto = Object.defineProperties(() => {}, { - ...styles, - level: { - enumerable: true, - get() { - return this._generator.level; - }, - set(level) { - this._generator.level = level; - } - } -}); +/***/ }), -const createStyler = (open, close, parent) => { - let openAll; - let closeAll; - if (parent === undefined) { - openAll = open; - closeAll = close; - } else { - openAll = parent.openAll + open; - closeAll = close + parent.closeAll; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/switchScan.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return { - open, - close, - openAll, - closeAll, - parent - }; -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return switchScan; }); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -const createBuilder = (self, _styler, _isEmpty) => { - const builder = (...arguments_) => { - // Single argument is hot path, implicit coercion is faster than anything - // eslint-disable-next-line no-implicit-coercion - return applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' ')); - }; - // `__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 +function switchScan(accumulator, seed) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var state = seed; + Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__[/* switchMap */ "a"])(function (value, index) { return accumulator(state, value, index); }, function (_, innerValue) { return ((state = innerValue), innerValue); })(source).subscribe(subscriber); + return function () { + state = null; + }; + }); +} +//# sourceMappingURL=switchScan.js.map - builder._generator = self; - builder._styler = _styler; - builder._isEmpty = _isEmpty; +/***/ }), - return builder; -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/take.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -const applyStyle = (self, string) => { - if (self.level <= 0 || !string) { - return self._isEmpty ? '' : string; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return take; }); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - let styler = self._styler; - if (styler === undefined) { - return string; - } - const {openAll, closeAll} = styler; - if (string.indexOf('\u001B') !== -1) { - while (styler !== undefined) { - // 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'. - string = stringReplaceAll(string, styler.close, styler.open); +function take(count) { + return count <= 0 + ? + function () { return _observable_empty__WEBPACK_IMPORTED_MODULE_0__[/* EMPTY */ "a"]; } + : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var seen = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + if (++seen <= count) { + subscriber.next(value); + if (count <= seen) { + subscriber.complete(); + } + } + })); + }); +} +//# sourceMappingURL=take.js.map - styler = styler.parent; - } - } +/***/ }), - // We can move both next actions out of loop, because remaining actions in loop won't have - // any/visible effect on parts we add here. 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 - const lfIndex = string.indexOf('\n'); - if (lfIndex !== -1) { - string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/takeLast.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return openAll + string + closeAll; -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return takeLast; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -let template; -const chalkTag = (chalk, ...strings) => { - const [firstString] = strings; - if (!Array.isArray(firstString)) { - // If chalk() was called by itself or with a string, - // return the string itself as a string. - return strings.join(' '); - } - const arguments_ = strings.slice(1); - const parts = [firstString.raw[0]]; - for (let i = 1; i < firstString.length; i++) { - parts.push( - String(arguments_[i - 1]).replace(/[{}\\]/g, '\\$&'), - String(firstString.raw[i]) - ); - } +function takeLast(count) { + return count <= 0 + ? function () { return _observable_empty__WEBPACK_IMPORTED_MODULE_1__[/* EMPTY */ "a"]; } + : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + var buffer = []; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + buffer.push(value); + count < buffer.length && buffer.shift(); + }, function () { + var e_1, _a; + try { + for (var buffer_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) { + var value = buffer_1_1.value; + subscriber.next(value); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1); + } + finally { if (e_1) throw e_1.error; } + } + subscriber.complete(); + }, undefined, function () { + buffer = null; + })); + }); +} +//# sourceMappingURL=takeLast.js.map - if (template === undefined) { - template = __webpack_require__("../../node_modules/ora/node_modules/chalk/source/templates.js"); - } +/***/ }), - return template(chalk, parts.join('')); -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -Object.defineProperties(Chalk.prototype, styles); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return takeUntil; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -const chalk = Chalk(); // eslint-disable-line new-cap -chalk.supportsColor = stdoutColor; -chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap -chalk.stderr.supportsColor = stderrColor; -// For TypeScript -chalk.Level = { - None: 0, - Basic: 1, - Ansi256: 2, - TrueColor: 3, - 0: 'None', - 1: 'Basic', - 2: 'Ansi256', - 3: 'TrueColor' -}; -module.exports = chalk; +function takeUntil(notifier) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(notifier).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { return subscriber.complete(); }, _util_noop__WEBPACK_IMPORTED_MODULE_3__[/* noop */ "a"])); + !subscriber.closed && source.subscribe(subscriber); + }); +} +//# sourceMappingURL=takeUntil.js.map /***/ }), -/***/ "../../node_modules/ora/node_modules/chalk/source/templates.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return takeWhile; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -const TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; -const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; -const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; -const ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi; - -const ESCAPES = new Map([ - ['n', '\n'], - ['r', '\r'], - ['t', '\t'], - ['b', '\b'], - ['f', '\f'], - ['v', '\v'], - ['0', '\0'], - ['\\', '\\'], - ['e', '\u001B'], - ['a', '\u0007'] -]); - -function unescape(c) { - const u = c[0] === 'u'; - const bracket = c[1] === '{'; - - if ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) { - return String.fromCharCode(parseInt(c.slice(1), 16)); - } - - if (u && bracket) { - return String.fromCodePoint(parseInt(c.slice(2, -1), 16)); - } - return ESCAPES.get(c) || c; +function takeWhile(predicate, inclusive) { + if (inclusive === void 0) { inclusive = false; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var index = 0; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var result = predicate(value, index++); + (result || inclusive) && subscriber.next(value); + !result && subscriber.complete(); + })); + }); } +//# sourceMappingURL=takeWhile.js.map -function parseArguments(name, arguments_) { - const results = []; - const chunks = arguments_.trim().split(/\s*,\s*/g); - let matches; - - for (const chunk of chunks) { - const number = Number(chunk); - if (!Number.isNaN(number)) { - results.push(number); - } else if ((matches = chunk.match(STRING_REGEX))) { - results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character)); - } else { - throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); - } - } +/***/ }), - return results; -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/tap.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function parseStyle(style) { - STYLE_REGEX.lastIndex = 0; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return tap; }); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - const results = []; - let matches; - while ((matches = STYLE_REGEX.exec(style)) !== null) { - const name = matches[1]; - if (matches[2]) { - const args = parseArguments(name, matches[2]); - results.push([name].concat(args)); - } else { - results.push([name]); - } - } - return results; +function tap(observerOrNext, error, complete) { + var tapObserver = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(observerOrNext) || error || complete + ? + { next: observerOrNext, error: error, complete: complete } + : observerOrNext; + return tapObserver + ? Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var _a; + (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); + var isUnsub = true; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var _a; + (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value); + subscriber.next(value); + }, function () { + var _a; + isUnsub = false; + (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver); + subscriber.complete(); + }, function (err) { + var _a; + isUnsub = false; + (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err); + subscriber.error(err); + }, function () { + var _a, _b; + if (isUnsub) { + (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); + } + (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver); + })); + }) + : + _util_identity__WEBPACK_IMPORTED_MODULE_3__[/* identity */ "a"]; } +//# sourceMappingURL=tap.js.map -function buildStyle(chalk, styles) { - const enabled = {}; - - for (const layer of styles) { - for (const style of layer.styles) { - enabled[style[0]] = layer.inverse ? null : style.slice(1); - } - } - - let current = chalk; - for (const [styleName, styles] of Object.entries(enabled)) { - if (!Array.isArray(styles)) { - continue; - } +/***/ }), - if (!(styleName in current)) { - throw new Error(`Unknown Chalk style: ${styleName}`); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - current = styles.length > 0 ? current[styleName](...styles) : current[styleName]; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return defaultThrottleConfig; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return throttle; }); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - return current; -} -module.exports = (chalk, temporary) => { - const styles = []; - const chunks = []; - let chunk = []; - // eslint-disable-next-line max-params - temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => { - if (escapeCharacter) { - chunk.push(unescape(escapeCharacter)); - } else if (style) { - const string = chunk.join(''); - chunk = []; - chunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string)); - styles.push({inverse, styles: parseStyle(style)}); - } else if (close) { - if (styles.length === 0) { - throw new Error('Found extraneous } in Chalk template literal'); - } - - chunks.push(buildStyle(chalk, styles)(chunk.join(''))); - chunk = []; - styles.pop(); - } else { - chunk.push(character); - } - }); - - chunks.push(chunk.join('')); - - if (styles.length > 0) { - const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`; - throw new Error(errMsg); - } - - return chunks.join(''); +var defaultThrottleConfig = { + leading: true, + trailing: false, }; - +function throttle(durationSelector, config) { + if (config === void 0) { config = defaultThrottleConfig; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { + var leading = config.leading, trailing = config.trailing; + var hasValue = false; + var sendValue = null; + var throttled = null; + var isComplete = false; + var endThrottling = function () { + throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe(); + throttled = null; + if (trailing) { + send(); + isComplete && subscriber.complete(); + } + }; + var cleanupThrottling = function () { + throttled = null; + isComplete && subscriber.complete(); + }; + var startThrottle = function (value) { + return (throttled = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(durationSelector(value)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, endThrottling, cleanupThrottling))); + }; + var send = function () { + if (hasValue) { + hasValue = false; + var value = sendValue; + sendValue = null; + subscriber.next(value); + !isComplete && startThrottle(value); + } + }; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + hasValue = true; + sendValue = value; + !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value)); + }, function () { + isComplete = true; + !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete(); + })); + }); +} +//# sourceMappingURL=throttle.js.map /***/ }), -/***/ "../../node_modules/ora/node_modules/chalk/source/util.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throttleTime; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js"); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); -const stringReplaceAll = (string, substring, replacer) => { - let index = string.indexOf(substring); - if (index === -1) { - return string; - } - const substringLength = substring.length; - let endIndex = 0; - let returnValue = ''; - do { - returnValue += string.substr(endIndex, index - endIndex) + substring + replacer; - endIndex = index + substringLength; - index = string.indexOf(substring, endIndex); - } while (index !== -1); +function throttleTime(duration, scheduler, config) { + if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } + if (config === void 0) { config = _throttle__WEBPACK_IMPORTED_MODULE_1__[/* defaultThrottleConfig */ "a"]; } + var duration$ = Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__[/* timer */ "a"])(duration, scheduler); + return Object(_throttle__WEBPACK_IMPORTED_MODULE_1__[/* throttle */ "b"])(function () { return duration$; }, config); +} +//# sourceMappingURL=throttleTime.js.map - returnValue += string.substr(endIndex); - return returnValue; -}; +/***/ }), -const stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => { - let endIndex = 0; - let returnValue = ''; - do { - const gotCR = string[index - 1] === '\r'; - returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\r\n' : '\n') + postfix; - endIndex = index + 1; - index = string.indexOf('\n', endIndex); - } while (index !== -1); +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - returnValue += string.substr(endIndex); - return returnValue; -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throwIfEmpty; }); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -module.exports = { - stringReplaceAll, - stringEncaseCRLFWithFirstIndex -}; +function throwIfEmpty(errorFactory) { + if (errorFactory === void 0) { errorFactory = defaultErrorFactory; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var hasValue = false; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + hasValue = true; + subscriber.next(value); + }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); })); + }); +} +function defaultErrorFactory() { + return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"](); +} +//# sourceMappingURL=throwIfEmpty.js.map + /***/ }), -/***/ "../../node_modules/ora/node_modules/has-flag/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timeInterval; }); +/* unused harmony export TimeInterval */ +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -module.exports = (flag, argv) => { - argv = argv || process.argv; - const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); - const pos = argv.indexOf(prefix + flag); - const terminatorPos = argv.indexOf('--'); - return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos); -}; +function timeInterval(scheduler) { + if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var last = scheduler.now(); + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var now = scheduler.now(); + var interval = now - last; + last = now; + subscriber.next(new TimeInterval(value, interval)); + })); + }); +} +var TimeInterval = (function () { + function TimeInterval(value, interval) { + this.value = value; + this.interval = interval; + } + return TimeInterval; +}()); + +//# sourceMappingURL=timeInterval.js.map + /***/ }), -/***/ "../../node_modules/ora/node_modules/log-symbols/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TimeoutError; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return timeout; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isDate.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_createErrorClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); + -const chalk = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/index.js"); -const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color'; -const main = { - info: chalk.blue('ℹ'), - success: chalk.green('✔'), - warning: chalk.yellow('⚠'), - error: chalk.red('✖') -}; -const fallbacks = { - info: chalk.blue('i'), - success: chalk.green('√'), - warning: chalk.yellow('‼'), - error: chalk.red('×') -}; -module.exports = isSupported ? main : fallbacks; +var TimeoutError = Object(_util_createErrorClass__WEBPACK_IMPORTED_MODULE_4__[/* createErrorClass */ "a"])(function (_super) { + return function TimeoutErrorImpl(info) { + if (info === void 0) { info = null; } + _super(this); + this.message = 'Timeout has occurred'; + this.name = 'TimeoutError'; + this.info = info; + }; +}); +function timeout(config, schedulerArg) { + var _a = (Object(_util_isDate__WEBPACK_IMPORTED_MODULE_1__[/* isValidDate */ "a"])(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"] : _c, _d = _a.meta, meta = _d === void 0 ? null : _d; + if (first == null && each == null) { + throw new TypeError('No timeout provided.'); + } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + var originalSourceSubscription; + var timerSubscription; + var lastValue = null; + var seen = 0; + var startTimer = function (delay) { + timerSubscription = Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_6__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { + try { + originalSourceSubscription.unsubscribe(); + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(_with({ + meta: meta, + lastValue: lastValue, + seen: seen, + })).subscribe(subscriber); + } + catch (err) { + subscriber.error(err); + } + }, delay); + }; + originalSourceSubscription = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); + seen++; + subscriber.next((lastValue = value)); + each > 0 && startTimer(each); + }, undefined, undefined, function () { + if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) { + timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); + } + lastValue = null; + })); + !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each); + }); +} +function timeoutErrorFactory(info) { + throw new TimeoutError(info); +} +//# sourceMappingURL=timeout.js.map /***/ }), -/***/ "../../node_modules/ora/node_modules/log-symbols/node_modules/ansi-styles/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* WEBPACK VAR INJECTION */(function(module) { -const colorConvert = __webpack_require__("../../node_modules/color-convert/index.js"); - -const wrapAnsi16 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${code + offset}m`; -}; - -const wrapAnsi256 = (fn, offset) => function () { - const code = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};5;${code}m`; -}; - -const wrapAnsi16m = (fn, offset) => function () { - const rgb = fn.apply(colorConvert, arguments); - return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; -}; - -function assembleStyles() { - const codes = new Map(); - const styles = { - modifier: { - reset: [0, 0], - // 21 isn't widely supported and 22 does the same thing - bold: [1, 22], - dim: [2, 22], - italic: [3, 23], - underline: [4, 24], - inverse: [7, 27], - hidden: [8, 28], - strikethrough: [9, 29] - }, - color: { - black: [30, 39], - red: [31, 39], - green: [32, 39], - yellow: [33, 39], - blue: [34, 39], - magenta: [35, 39], - cyan: [36, 39], - white: [37, 39], - gray: [90, 39], - - // Bright color - redBright: [91, 39], - greenBright: [92, 39], - yellowBright: [93, 39], - blueBright: [94, 39], - magentaBright: [95, 39], - cyanBright: [96, 39], - whiteBright: [97, 39] - }, - bgColor: { - bgBlack: [40, 49], - bgRed: [41, 49], - bgGreen: [42, 49], - bgYellow: [43, 49], - bgBlue: [44, 49], - bgMagenta: [45, 49], - bgCyan: [46, 49], - bgWhite: [47, 49], +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timeoutWith; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isDate.js"); +/* harmony import */ var _timeout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js"); - // Bright color - bgBlackBright: [100, 49], - bgRedBright: [101, 49], - bgGreenBright: [102, 49], - bgYellowBright: [103, 49], - bgBlueBright: [104, 49], - bgMagentaBright: [105, 49], - bgCyanBright: [106, 49], - bgWhiteBright: [107, 49] - } - }; - // Fix humans - styles.color.grey = styles.color.gray; - for (const groupName of Object.keys(styles)) { - const group = styles[groupName]; +function timeoutWith(due, withObservable, scheduler) { + var first; + var each; + var _with; + scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* async */ "a"]; + if (Object(_util_isDate__WEBPACK_IMPORTED_MODULE_1__[/* isValidDate */ "a"])(due)) { + first = due; + } + else if (typeof due === 'number') { + each = due; + } + if (withObservable) { + _with = function () { return withObservable; }; + } + else { + throw new TypeError('No observable provided to switch to'); + } + if (first == null && each == null) { + throw new TypeError('No timeout provided.'); + } + return Object(_timeout__WEBPACK_IMPORTED_MODULE_2__[/* timeout */ "b"])({ + first: first, + each: each, + scheduler: scheduler, + with: _with, + }); +} +//# sourceMappingURL=timeoutWith.js.map - for (const styleName of Object.keys(group)) { - const style = group[styleName]; +/***/ }), - styles[styleName] = { - open: `\u001B[${style[0]}m`, - close: `\u001B[${style[1]}m` - }; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/timestamp.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - group[styleName] = styles[styleName]; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timestamp; }); +/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js"); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); - codes.set(style[0], style[1]); - } - Object.defineProperty(styles, groupName, { - value: group, - enumerable: false - }); +function timestamp(timestampProvider) { + if (timestampProvider === void 0) { timestampProvider = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__[/* dateTimestampProvider */ "a"]; } + return Object(_map__WEBPACK_IMPORTED_MODULE_1__[/* map */ "a"])(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); }); +} +//# sourceMappingURL=timestamp.js.map - Object.defineProperty(styles, 'codes', { - value: codes, - enumerable: false - }); - } +/***/ }), - const ansi2ansi = n => n; - const rgb2rgb = (r, g, b) => [r, g, b]; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/toArray.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - styles.color.close = '\u001B[39m'; - styles.bgColor.close = '\u001B[49m'; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return toArray; }); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - styles.color.ansi = { - ansi: wrapAnsi16(ansi2ansi, 0) - }; - styles.color.ansi256 = { - ansi256: wrapAnsi256(ansi2ansi, 0) - }; - styles.color.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 0) - }; - styles.bgColor.ansi = { - ansi: wrapAnsi16(ansi2ansi, 10) - }; - styles.bgColor.ansi256 = { - ansi256: wrapAnsi256(ansi2ansi, 10) - }; - styles.bgColor.ansi16m = { - rgb: wrapAnsi16m(rgb2rgb, 10) - }; +var arrReducer = function (arr, value) { return (arr.push(value), arr); }; +function toArray() { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[/* reduce */ "a"])(arrReducer, [])(source).subscribe(subscriber); + }); +} +//# sourceMappingURL=toArray.js.map - for (let key of Object.keys(colorConvert)) { - if (typeof colorConvert[key] !== 'object') { - continue; - } +/***/ }), - const suite = colorConvert[key]; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/window.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (key === 'ansi16') { - key = 'ansi'; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return window; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - if ('ansi16' in suite) { - styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0); - styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10); - } - if ('ansi256' in suite) { - styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0); - styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10); - } - if ('rgb' in suite) { - styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0); - styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10); - } - } - return styles; +function window(windowBoundaries) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var windowSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); + subscriber.next(windowSubject.asObservable()); + var errorHandler = function (err) { + windowSubject.error(err); + subscriber.error(err); + }; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () { + windowSubject.complete(); + subscriber.complete(); + }, errorHandler)); + windowBoundaries.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { + windowSubject.complete(); + subscriber.next((windowSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"]())); + }, _util_noop__WEBPACK_IMPORTED_MODULE_3__[/* noop */ "a"], errorHandler)); + return function () { + windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe(); + windowSubject = null; + }; + }); } - -// Make the export immutable -Object.defineProperty(module, 'exports', { - enumerable: true, - get: assembleStyles -}); - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("../../node_modules/webpack/buildin/module.js")(module))) +//# sourceMappingURL=window.js.map /***/ }), -/***/ "../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/windowCount.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return windowCount; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -const escapeStringRegexp = __webpack_require__("../../node_modules/escape-string-regexp/index.js"); -const ansiStyles = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/node_modules/ansi-styles/index.js"); -const stdoutColor = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/node_modules/supports-color/index.js").stdout; -const template = __webpack_require__("../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/templates.js"); -const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); -// `supportsColor.level` → `ansiStyles.color[name]` mapping -const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; +function windowCount(windowSize, startWindowEvery) { + if (startWindowEvery === void 0) { startWindowEvery = 0; } + var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize; + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + var windows = [new _Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"]()]; + var starts = []; + var count = 0; + subscriber.next(windows[0].asObservable()); + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var e_1, _a; + try { + for (var windows_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) { + var window_1 = windows_1_1.value; + window_1.next(value); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1); + } + finally { if (e_1) throw e_1.error; } + } + var c = count - windowSize + 1; + if (c >= 0 && c % startEvery === 0) { + windows.shift().complete(); + } + if (++count % startEvery === 0) { + var window_2 = new _Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"](); + windows.push(window_2); + subscriber.next(window_2.asObservable()); + } + }, function () { + while (windows.length > 0) { + windows.shift().complete(); + } + subscriber.complete(); + }, function (err) { + while (windows.length > 0) { + windows.shift().error(err); + } + subscriber.error(err); + }, function () { + starts = null; + windows = null; + })); + }); +} +//# sourceMappingURL=windowCount.js.map -// `color-convert` models to exclude from the Chalk API due to conflicts and such -const skipModels = new Set(['gray']); +/***/ }), -const styles = Object.create(null); +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/windowTime.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function applyOptions(obj, options) { - options = options || {}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return windowTime; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); +/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - // 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'; +function windowTime(windowTimeSpan) { + var _a, _b; + var otherArgs = []; + for (var _i = 1; _i < arguments.length; _i++) { + otherArgs[_i - 1] = arguments[_i]; + } + var scheduler = (_a = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popScheduler */ "c"])(otherArgs)) !== null && _a !== void 0 ? _a : _scheduler_async__WEBPACK_IMPORTED_MODULE_1__[/* asyncScheduler */ "b"]; + var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null; + var maxWindowSize = otherArgs[1] || Infinity; + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__[/* operate */ "b"])(function (source, subscriber) { + var windowRecords = []; + var restartOnClose = false; + var closeWindow = function (record) { + var window = record.window, subs = record.subs; + window.complete(); + subs.unsubscribe(); + Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_5__[/* arrRemove */ "a"])(windowRecords, record); + restartOnClose && startWindow(); + }; + var startWindow = function () { + if (windowRecords) { + var subs = new _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"](); + subscriber.add(subs); + var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); + var record_1 = { + window: window_1, + subs: subs, + seen: 0, + }; + windowRecords.push(record_1); + subscriber.next(window_1.asObservable()); + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__[/* executeSchedule */ "a"])(subs, scheduler, function () { return closeWindow(record_1); }, windowTimeSpan); + } + }; + if (windowCreationInterval !== null && windowCreationInterval >= 0) { + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__[/* executeSchedule */ "a"])(subscriber, scheduler, startWindow, windowCreationInterval, true); + } + else { + restartOnClose = true; + } + startWindow(); + var loop = function (cb) { return windowRecords.slice().forEach(cb); }; + var terminate = function (cb) { + loop(function (_a) { + var window = _a.window; + return cb(window); + }); + cb(subscriber); + subscriber.unsubscribe(); + }; + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + loop(function (record) { + record.window.next(value); + maxWindowSize <= ++record.seen && closeWindow(record); + }); + }, function () { return terminate(function (consumer) { return consumer.complete(); }); }, function (err) { return terminate(function (consumer) { return consumer.error(err); }); })); + return function () { + windowRecords = null; + }; + }); } +//# sourceMappingURL=windowTime.js.map -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); - } - }; -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -styles.visible = { - get() { - return build.call(this, this._styles || [], true, 'visible'); - } -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return windowToggle; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); -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; +function windowToggle(openings, closingSelector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__[/* operate */ "b"])(function (source, subscriber) { + var windows = []; + var handleError = function (err) { + while (0 < windows.length) { + windows.shift().error(err); + } + subscriber.error(err); + }; + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__[/* innerFrom */ "a"])(openings).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, function (openValue) { + var window = new _Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"](); + windows.push(window); + var closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"](); + var closeWindow = function () { + Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_7__[/* arrRemove */ "a"])(windows, window); + window.complete(); + closingSubscription.unsubscribe(); + }; + var closingNotifier; + try { + closingNotifier = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__[/* innerFrom */ "a"])(closingSelector(openValue)); + } + catch (err) { + handleError(err); + return; + } + subscriber.next(window.asObservable()); + closingSubscription.add(closingNotifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, closeWindow, _util_noop__WEBPACK_IMPORTED_MODULE_6__[/* noop */ "a"], handleError))); + }, _util_noop__WEBPACK_IMPORTED_MODULE_6__[/* noop */ "a"])); + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + var e_1, _a; + var windowsCopy = windows.slice(); + try { + for (var windowsCopy_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) { + var window_1 = windowsCopy_1_1.value; + window_1.next(value); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1); + } + finally { if (e_1) throw e_1.error; } + } + }, function () { + while (0 < windows.length) { + windows.shift().complete(); + } + subscriber.complete(); + }, handleError, function () { + while (0 < windows.length) { + windows.shift().unsubscribe(); + } + })); + }); +} +//# sourceMappingURL=windowToggle.js.map - 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; - } - }); +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // See below for fix regarding invisible grey/dim combination on Windows - builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return windowWhen; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - // `__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 windowWhen(closingSelector) { + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var window; + var closingSubscriber; + var handleError = function (err) { + window.error(err); + subscriber.error(err); + }; + var openWindow = function () { + closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); + window === null || window === void 0 ? void 0 : window.complete(); + window = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); + subscriber.next(window.asObservable()); + var closingNotifier; + try { + closingNotifier = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(closingSelector()); + } + catch (err) { + handleError(err); + return; + } + closingNotifier.subscribe((closingSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, openWindow, openWindow, handleError))); + }; + openWindow(); + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return window.next(value); }, function () { + window.complete(); + subscriber.complete(); + }, handleError, function () { + closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); + window = null; + })); + }); } +//# sourceMappingURL=windowWhen.js.map -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 ''; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (argsLen > 1) { - // Don't slice `arguments`, it prevents V8 optimizations - for (let a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return withLatestFrom; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); +/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); +/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); - 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(' '); - } +function withLatestFrom() { + var inputs = []; + for (var _i = 0; _i < arguments.length; _i++) { + inputs[_i] = arguments[_i]; + } + var project = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popResultSelector */ "b"])(inputs); + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { + var len = inputs.length; + var otherValues = new Array(len); + var hasValue = inputs.map(function () { return false; }); + var ready = false; + var _loop_1 = function (i) { + Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(inputs[i]).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + otherValues[i] = value; + if (!ready && !hasValue[i]) { + hasValue[i] = true; + (ready = hasValue.every(_util_identity__WEBPACK_IMPORTED_MODULE_4__[/* identity */ "a"])) && (hasValue = null); + } + }, _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"])); + }; + for (var i = 0; i < len; i++) { + _loop_1(i); + } + source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { + if (ready) { + var values = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([value], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherValues)); + subscriber.next(project ? project.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(values))) : values); + } + })); + }); +} +//# sourceMappingURL=withLatestFrom.js.map - 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])); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/zip.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - return template(chalk, parts.join('')); -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return zip; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/zip.js"); +/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -Object.defineProperties(Chalk.prototype, styles); -module.exports = Chalk(); // eslint-disable-line new-cap -module.exports.supportsColor = stdoutColor; -module.exports.default = module.exports; // For TypeScript +function zip() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { + _observable_zip__WEBPACK_IMPORTED_MODULE_1__[/* zip */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(sources))).subscribe(subscriber); + }); +} +//# sourceMappingURL=zip.js.map /***/ }), -/***/ "../../node_modules/ora/node_modules/log-symbols/node_modules/chalk/templates.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/zipAll.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return zipAll; }); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/zip.js"); +/* harmony import */ var _joinAllInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js"); -const TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; -const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; -const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; -const ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi; - -const ESCAPES = new Map([ - ['n', '\n'], - ['r', '\r'], - ['t', '\t'], - ['b', '\b'], - ['f', '\f'], - ['v', '\v'], - ['0', '\0'], - ['\\', '\\'], - ['e', '\u001B'], - ['a', '\u0007'] -]); - -function unescape(c) { - if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) { - return String.fromCharCode(parseInt(c.slice(1), 16)); - } - return ESCAPES.get(c) || c; +function zipAll(project) { + return Object(_joinAllInternals__WEBPACK_IMPORTED_MODULE_1__[/* joinAllInternals */ "a"])(_observable_zip__WEBPACK_IMPORTED_MODULE_0__[/* zip */ "a"], project); } +//# sourceMappingURL=zipAll.js.map -function parseArguments(name, args) { - const results = []; - const chunks = args.trim().split(/\s*,\s*/g); - let matches; +/***/ }), - for (const chunk of chunks) { - if (!isNaN(chunk)) { - results.push(Number(chunk)); - } else if ((matches = chunk.match(STRING_REGEX))) { - results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr)); - } else { - throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); - } - } - - return results; -} - -function parseStyle(style) { - STYLE_REGEX.lastIndex = 0; - - const results = []; - let matches; +/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/zipWith.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - while ((matches = STYLE_REGEX.exec(style)) !== null) { - const name = matches[1]; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return zipWith; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _zip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zip.js"); - if (matches[2]) { - const args = parseArguments(name, matches[2]); - results.push([name].concat(args)); - } else { - results.push([name]); - } - } - return results; +function zipWith() { + var otherInputs = []; + for (var _i = 0; _i < arguments.length; _i++) { + otherInputs[_i] = arguments[_i]; + } + return _zip__WEBPACK_IMPORTED_MODULE_1__[/* zip */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherInputs))); } +//# sourceMappingURL=zipWith.js.map -function buildStyle(chalk, styles) { - const enabled = {}; - - for (const layer of styles) { - for (const style of layer.styles) { - enabled[style[0]] = layer.inverse ? null : style.slice(1); - } - } +/***/ }), - let current = chalk; - for (const styleName of Object.keys(enabled)) { - if (Array.isArray(enabled[styleName])) { - if (!(styleName in current)) { - throw new Error(`Unknown Chalk style: ${styleName}`); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (enabled[styleName].length > 0) { - current = current[styleName].apply(current, enabled[styleName]); - } else { - current = current[styleName]; - } - } - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleArray; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); - return current; +function scheduleArray(input, scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + var i = 0; + return scheduler.schedule(function () { + if (i === input.length) { + subscriber.complete(); + } + else { + subscriber.next(input[i++]); + if (!subscriber.closed) { + this.schedule(); + } + } + }); + }); } +//# sourceMappingURL=scheduleArray.js.map -module.exports = (chalk, tmp) => { - const styles = []; - const chunks = []; - let chunk = []; - - // eslint-disable-next-line max-params - tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => { - if (escapeChar) { - chunk.push(unescape(escapeChar)); - } else if (style) { - const str = chunk.join(''); - chunk = []; - chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str)); - styles.push({inverse, styles: parseStyle(style)}); - } else if (close) { - if (styles.length === 0) { - throw new Error('Found extraneous } in Chalk template literal'); - } - - chunks.push(buildStyle(chalk, styles)(chunk.join(''))); - chunk = []; - styles.pop(); - } else { - chunk.push(chr); - } - }); +/***/ }), - chunks.push(chunk.join('')); +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (styles.length > 0) { - const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`; - throw new Error(errMsg); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleAsyncIterable; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - return chunks.join(''); -}; +function scheduleAsyncIterable(input, scheduler) { + if (!input) { + throw new Error('Iterable cannot be null'); + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { + var iterator = input[Symbol.asyncIterator](); + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { + iterator.next().then(function (result) { + if (result.done) { + subscriber.complete(); + } + else { + subscriber.next(result.value); + } + }); + }, 0, true); + }); + }); +} +//# sourceMappingURL=scheduleAsyncIterable.js.map /***/ }), -/***/ "../../node_modules/ora/node_modules/log-symbols/node_modules/supports-color/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleIterable; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); -const os = __webpack_require__("os"); -const hasFlag = __webpack_require__("../../node_modules/ora/node_modules/has-flag/index.js"); - -const env = process.env; -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false')) { - forceColor = false; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = true; -} -if ('FORCE_COLOR' in env) { - forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0; -} -function translateLevel(level) { - if (level === 0) { - return false; - } - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; +function scheduleIterable(input, scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { + var iterator; + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { + iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_1__[/* iterator */ "a"]](); + Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { + var _a; + var value; + var done; + try { + (_a = iterator.next(), value = _a.value, done = _a.done); + } + catch (err) { + subscriber.error(err); + return; + } + if (done) { + subscriber.complete(); + } + else { + subscriber.next(value); + } + }, 0, true); + }); + return function () { return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[/* isFunction */ "a"])(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); }; + }); } +//# sourceMappingURL=scheduleIterable.js.map -function supportsColor(stream) { - if (forceColor === false) { - return 0; - } - - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } - - if (hasFlag('color=256')) { - return 2; - } +/***/ }), - if (stream && !stream.isTTY && forceColor !== true) { - return 0; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const min = forceColor ? 1 : 0; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleObservable; }); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); +/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); - if (process.platform === 'win32') { - // Node.js 7.5.0 is the first version of Node.js to include a patch to - // libuv that enables 256 color output on Windows. Anything earlier and it - // won't work. However, here we target Node.js 8 at minimum as it is an LTS - // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows - // release that supports 256 colors. Windows 10 build 14931 is the first release - // that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(process.versions.node.split('.')[0]) >= 8 && - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } - return 1; - } - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } +function scheduleObservable(input, scheduler) { + return Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(input).pipe(Object(_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__[/* subscribeOn */ "a"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_1__[/* observeOn */ "a"])(scheduler)); +} +//# sourceMappingURL=scheduleObservable.js.map - return min; - } +/***/ }), - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (env.COLORTERM === 'truecolor') { - return 3; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return schedulePromise; }); +/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); +/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); +/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } +function schedulePromise(input, scheduler) { + return Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(input).pipe(Object(_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__[/* subscribeOn */ "a"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_1__[/* observeOn */ "a"])(scheduler)); +} +//# sourceMappingURL=schedulePromise.js.map - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } +/***/ }), - if ('COLORTERM' in env) { - return 1; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (env.TERM === 'dumb') { - return min; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleReadableStreamLike; }); +/* harmony import */ var _scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js"); +/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js"); - return min; -} -function getSupportLevel(stream) { - const level = supportsColor(stream); - return translateLevel(level); +function scheduleReadableStreamLike(input, scheduler) { + return Object(_scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_0__[/* scheduleAsyncIterable */ "a"])(Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_1__[/* readableStreamLikeToAsyncGenerator */ "b"])(input), scheduler); } - -module.exports = { - supportsColor: getSupportLevel, - stdout: getSupportLevel(process.stdout), - stderr: getSupportLevel(process.stderr) -}; - +//# sourceMappingURL=scheduleReadableStreamLike.js.map /***/ }), -/***/ "../../node_modules/p-event/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduled; }); +/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js"); +/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js"); +/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js"); +/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js"); +/* harmony import */ var _scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js"); +/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js"); +/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js"); +/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js"); +/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js"); +/* harmony import */ var _util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js"); +/* harmony import */ var _util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js"); +/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js"); +/* harmony import */ var _scheduleReadableStreamLike__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js"); -const pTimeout = __webpack_require__("../../node_modules/p-event/node_modules/p-timeout/index.js"); - -const symbolAsyncIterator = Symbol.asyncIterator || '@@asyncIterator'; - -const normalizeEmitter = emitter => { - const addListener = emitter.on || emitter.addListener || emitter.addEventListener; - const removeListener = emitter.off || emitter.removeListener || emitter.removeEventListener; - - if (!addListener || !removeListener) { - throw new TypeError('Emitter is not compatible'); - } - - return { - addListener: addListener.bind(emitter), - removeListener: removeListener.bind(emitter) - }; -}; -const normalizeEvents = event => Array.isArray(event) ? event : [event]; -const multiple = (emitter, event, options) => { - let cancel; - const ret = new Promise((resolve, reject) => { - options = { - rejectionEvents: ['error'], - multiArgs: false, - resolveImmediately: false, - ...options - }; - if (!(options.count >= 0 && (options.count === Infinity || Number.isInteger(options.count)))) { - throw new TypeError('The `count` option should be at least 0 or more'); - } - // Allow multiple events - const events = normalizeEvents(event); - const items = []; - const {addListener, removeListener} = normalizeEmitter(emitter); - const onItem = (...args) => { - const value = options.multiArgs ? args : args[0]; - if (options.filter && !options.filter(value)) { - return; - } - items.push(value); - if (options.count === items.length) { - cancel(); - resolve(items); - } - }; - const rejectHandler = error => { - cancel(); - reject(error); - }; - cancel = () => { - for (const event of events) { - removeListener(event, onItem); - } - for (const rejectionEvent of options.rejectionEvents) { - removeListener(rejectionEvent, rejectHandler); - } - }; +function scheduled(input, scheduler) { + if (input != null) { + if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_5__[/* isInteropObservable */ "a"])(input)) { + return Object(_scheduleObservable__WEBPACK_IMPORTED_MODULE_0__[/* scheduleObservable */ "a"])(input, scheduler); + } + if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_7__[/* isArrayLike */ "a"])(input)) { + return Object(_scheduleArray__WEBPACK_IMPORTED_MODULE_2__[/* scheduleArray */ "a"])(input, scheduler); + } + if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_6__[/* isPromise */ "a"])(input)) { + return Object(_schedulePromise__WEBPACK_IMPORTED_MODULE_1__[/* schedulePromise */ "a"])(input, scheduler); + } + if (Object(_util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_9__[/* isAsyncIterable */ "a"])(input)) { + return Object(_scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_4__[/* scheduleAsyncIterable */ "a"])(input, scheduler); + } + if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_8__[/* isIterable */ "a"])(input)) { + return Object(_scheduleIterable__WEBPACK_IMPORTED_MODULE_3__[/* scheduleIterable */ "a"])(input, scheduler); + } + if (Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_11__[/* isReadableStreamLike */ "a"])(input)) { + return Object(_scheduleReadableStreamLike__WEBPACK_IMPORTED_MODULE_12__[/* scheduleReadableStreamLike */ "a"])(input, scheduler); + } + } + throw Object(_util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_10__[/* createInvalidObservableTypeError */ "a"])(input); +} +//# sourceMappingURL=scheduled.js.map - for (const event of events) { - addListener(event, onItem); - } +/***/ }), - for (const rejectionEvent of options.rejectionEvents) { - addListener(rejectionEvent, rejectHandler); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (options.resolveImmediately) { - resolve(items); - } - }); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Action; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); - ret.cancel = cancel; - if (typeof options.timeout === 'number') { - const timeout = pTimeout(ret, options.timeout); - timeout.cancel = cancel; - return timeout; - } +var Action = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(Action, _super); + function Action(scheduler, work) { + return _super.call(this) || this; + } + Action.prototype.schedule = function (state, delay) { + if (delay === void 0) { delay = 0; } + return this; + }; + return Action; +}(_Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"])); - return ret; -}; +//# sourceMappingURL=Action.js.map -const pEvent = (emitter, event, options) => { - if (typeof options === 'function') { - options = {filter: options}; - } +/***/ }), - options = { - ...options, - count: 1, - resolveImmediately: false - }; +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const arrayPromise = multiple(emitter, event, options); - const promise = arrayPromise.then(array => array[0]); // eslint-disable-line promise/prefer-await-to-then - promise.cancel = arrayPromise.cancel; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AnimationFrameAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); +/* harmony import */ var _animationFrameProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js"); - return promise; -}; -module.exports = pEvent; -// TODO: Remove this for the next major release -module.exports.default = pEvent; -module.exports.multiple = multiple; +var AnimationFrameAction = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AnimationFrameAction, _super); + function AnimationFrameAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { delay = 0; } + if (delay !== null && delay > 0) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + scheduler.actions.push(this); + return scheduler._scheduled || (scheduler._scheduled = _animationFrameProvider__WEBPACK_IMPORTED_MODULE_2__[/* animationFrameProvider */ "a"].requestAnimationFrame(function () { return scheduler.flush(undefined); })); + }; + AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { delay = 0; } + if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) { + return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); + } + if (!scheduler.actions.some(function (action) { return action.id === id; })) { + _animationFrameProvider__WEBPACK_IMPORTED_MODULE_2__[/* animationFrameProvider */ "a"].cancelAnimationFrame(id); + scheduler._scheduled = undefined; + } + return undefined; + }; + return AnimationFrameAction; +}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[/* AsyncAction */ "a"])); -module.exports.iterator = (emitter, event, options) => { - if (typeof options === 'function') { - options = {filter: options}; - } +//# sourceMappingURL=AnimationFrameAction.js.map - // Allow multiple events - const events = normalizeEvents(event); +/***/ }), - options = { - rejectionEvents: ['error'], - resolutionEvents: [], - limit: Infinity, - multiArgs: false, - ...options - }; +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const {limit} = options; - const isValidLimit = limit >= 0 && (limit === Infinity || Number.isInteger(limit)); - if (!isValidLimit) { - throw new TypeError('The `limit` option should be a non-negative integer or Infinity'); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AnimationFrameScheduler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); - if (limit === 0) { - // Return an empty async iterator to avoid any further cost - return { - [Symbol.asyncIterator]() { - return this; - }, - async next() { - return { - done: true, - value: undefined - }; - } - }; - } - const {addListener, removeListener} = normalizeEmitter(emitter); +var AnimationFrameScheduler = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AnimationFrameScheduler, _super); + function AnimationFrameScheduler() { + return _super !== null && _super.apply(this, arguments) || this; + } + AnimationFrameScheduler.prototype.flush = function (action) { + this._active = true; + var flushId = this._scheduled; + this._scheduled = undefined; + var actions = this.actions; + var error; + action = action || actions.shift(); + do { + if ((error = action.execute(action.state, action.delay))) { + break; + } + } while ((action = actions[0]) && action.id === flushId && actions.shift()); + this._active = false; + if (error) { + while ((action = actions[0]) && action.id === flushId && actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + return AnimationFrameScheduler; +}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsyncScheduler */ "a"])); - let isDone = false; - let error; - let hasPendingError = false; - const nextQueue = []; - const valueQueue = []; - let eventCount = 0; - let isLimitReached = false; +//# sourceMappingURL=AnimationFrameScheduler.js.map - const valueHandler = (...args) => { - eventCount++; - isLimitReached = eventCount === limit; +/***/ }), - const value = options.multiArgs ? args : args[0]; +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (nextQueue.length > 0) { - const {resolve} = nextQueue.shift(); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsapAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); +/* harmony import */ var _immediateProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js"); - resolve({done: false, value}); - if (isLimitReached) { - cancel(); - } - return; - } - - valueQueue.push(value); - - if (isLimitReached) { - cancel(); - } - }; - - const cancel = () => { - isDone = true; - for (const event of events) { - removeListener(event, valueHandler); - } - - for (const rejectionEvent of options.rejectionEvents) { - removeListener(rejectionEvent, rejectHandler); - } - - for (const resolutionEvent of options.resolutionEvents) { - removeListener(resolutionEvent, resolveHandler); - } - - while (nextQueue.length > 0) { - const {resolve} = nextQueue.shift(); - resolve({done: true, value: undefined}); - } - }; +var AsapAction = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsapAction, _super); + function AsapAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { delay = 0; } + if (delay !== null && delay > 0) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + scheduler.actions.push(this); + return scheduler._scheduled || (scheduler._scheduled = _immediateProvider__WEBPACK_IMPORTED_MODULE_2__[/* immediateProvider */ "a"].setImmediate(scheduler.flush.bind(scheduler, undefined))); + }; + AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { delay = 0; } + if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) { + return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); + } + if (!scheduler.actions.some(function (action) { return action.id === id; })) { + _immediateProvider__WEBPACK_IMPORTED_MODULE_2__[/* immediateProvider */ "a"].clearImmediate(id); + scheduler._scheduled = undefined; + } + return undefined; + }; + return AsapAction; +}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[/* AsyncAction */ "a"])); - const rejectHandler = (...args) => { - error = options.multiArgs ? args : args[0]; +//# sourceMappingURL=AsapAction.js.map - if (nextQueue.length > 0) { - const {reject} = nextQueue.shift(); - reject(error); - } else { - hasPendingError = true; - } +/***/ }), - cancel(); - }; +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const resolveHandler = (...args) => { - const value = options.multiArgs ? args : args[0]; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsapScheduler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); - if (options.filter && !options.filter(value)) { - return; - } - if (nextQueue.length > 0) { - const {resolve} = nextQueue.shift(); - resolve({done: true, value}); - } else { - valueQueue.push(value); - } +var AsapScheduler = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsapScheduler, _super); + function AsapScheduler() { + return _super !== null && _super.apply(this, arguments) || this; + } + AsapScheduler.prototype.flush = function (action) { + this._active = true; + var flushId = this._scheduled; + this._scheduled = undefined; + var actions = this.actions; + var error; + action = action || actions.shift(); + do { + if ((error = action.execute(action.state, action.delay))) { + break; + } + } while ((action = actions[0]) && action.id === flushId && actions.shift()); + this._active = false; + if (error) { + while ((action = actions[0]) && action.id === flushId && actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + return AsapScheduler; +}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsyncScheduler */ "a"])); - cancel(); - }; +//# sourceMappingURL=AsapScheduler.js.map - for (const event of events) { - addListener(event, valueHandler); - } +/***/ }), - for (const rejectionEvent of options.rejectionEvents) { - addListener(rejectionEvent, rejectHandler); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - for (const resolutionEvent of options.resolutionEvents) { - addListener(resolutionEvent, resolveHandler); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js"); +/* harmony import */ var _intervalProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js"); +/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); - return { - [symbolAsyncIterator]() { - return this; - }, - async next() { - if (valueQueue.length > 0) { - const value = valueQueue.shift(); - return { - done: isDone && valueQueue.length === 0 && !isLimitReached, - value - }; - } - if (hasPendingError) { - hasPendingError = false; - throw error; - } - if (isDone) { - return { - done: true, - value: undefined - }; - } - return new Promise((resolve, reject) => nextQueue.push({resolve, reject})); - }, - async return(value) { - cancel(); - return { - done: isDone, - value - }; - } - }; -}; +var AsyncAction = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsyncAction, _super); + function AsyncAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + _this.pending = false; + return _this; + } + AsyncAction.prototype.schedule = function (state, delay) { + if (delay === void 0) { delay = 0; } + if (this.closed) { + return this; + } + this.state = state; + var id = this.id; + var scheduler = this.scheduler; + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, delay); + } + this.pending = true; + this.delay = delay; + this.id = this.id || this.requestAsyncId(scheduler, this.id, delay); + return this; + }; + AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) { + if (delay === void 0) { delay = 0; } + return _intervalProvider__WEBPACK_IMPORTED_MODULE_2__[/* intervalProvider */ "a"].setInterval(scheduler.flush.bind(scheduler, this), delay); + }; + AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) { + if (delay === void 0) { delay = 0; } + if (delay != null && this.delay === delay && this.pending === false) { + return id; + } + _intervalProvider__WEBPACK_IMPORTED_MODULE_2__[/* intervalProvider */ "a"].clearInterval(id); + return undefined; + }; + AsyncAction.prototype.execute = function (state, delay) { + if (this.closed) { + return new Error('executing a cancelled action'); + } + this.pending = false; + var error = this._execute(state, delay); + if (error) { + return error; + } + else if (this.pending === false && this.id != null) { + this.id = this.recycleAsyncId(this.scheduler, this.id, null); + } + }; + AsyncAction.prototype._execute = function (state, _delay) { + var errored = false; + var errorValue; + try { + this.work(state); + } + catch (e) { + errored = true; + errorValue = e ? e : new Error('Scheduled action threw falsy error'); + } + if (errored) { + this.unsubscribe(); + return errorValue; + } + }; + AsyncAction.prototype.unsubscribe = function () { + if (!this.closed) { + var _a = this, id = _a.id, scheduler = _a.scheduler; + var actions = scheduler.actions; + this.work = this.state = this.scheduler = null; + this.pending = false; + Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__[/* arrRemove */ "a"])(actions, this); + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, null); + } + this.delay = null; + _super.prototype.unsubscribe.call(this); + } + }; + return AsyncAction; +}(_Action__WEBPACK_IMPORTED_MODULE_1__[/* Action */ "a"])); +//# sourceMappingURL=AsyncAction.js.map /***/ }), -/***/ "../../node_modules/p-event/node_modules/p-timeout/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncScheduler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Scheduler.js"); -const pFinally = __webpack_require__("../../node_modules/p-finally/index.js"); - -class TimeoutError extends Error { - constructor(message) { - super(message); - this.name = 'TimeoutError'; - } -} -module.exports = (promise, ms, fallback) => new Promise((resolve, reject) => { - if (typeof ms !== 'number' || ms < 0) { - throw new TypeError('Expected `ms` to be a positive number'); - } +var AsyncScheduler = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsyncScheduler, _super); + function AsyncScheduler(SchedulerAction, now) { + if (now === void 0) { now = _Scheduler__WEBPACK_IMPORTED_MODULE_1__[/* Scheduler */ "a"].now; } + var _this = _super.call(this, SchedulerAction, now) || this; + _this.actions = []; + _this._active = false; + _this._scheduled = undefined; + return _this; + } + AsyncScheduler.prototype.flush = function (action) { + var actions = this.actions; + if (this._active) { + actions.push(action); + return; + } + var error; + this._active = true; + do { + if ((error = action.execute(action.state, action.delay))) { + break; + } + } while ((action = actions.shift())); + this._active = false; + if (error) { + while ((action = actions.shift())) { + action.unsubscribe(); + } + throw error; + } + }; + return AsyncScheduler; +}(_Scheduler__WEBPACK_IMPORTED_MODULE_1__[/* Scheduler */ "a"])); - const timer = setTimeout(() => { - if (typeof fallback === 'function') { - try { - resolve(fallback()); - } catch (err) { - reject(err); - } - return; - } +//# sourceMappingURL=AsyncScheduler.js.map - const message = typeof fallback === 'string' ? fallback : `Promise timed out after ${ms} milliseconds`; - const err = fallback instanceof Error ? fallback : new TimeoutError(message); +/***/ }), - if (typeof promise.cancel === 'function') { - promise.cancel(); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - reject(err); - }, ms); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueueAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); - pFinally( - promise.then(resolve, reject), - () => { - clearTimeout(timer); - } - ); -}); -module.exports.TimeoutError = TimeoutError; +var QueueAction = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(QueueAction, _super); + function QueueAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + QueueAction.prototype.schedule = function (state, delay) { + if (delay === void 0) { delay = 0; } + if (delay > 0) { + return _super.prototype.schedule.call(this, state, delay); + } + this.delay = delay; + this.state = state; + this.scheduler.flush(this); + return this; + }; + QueueAction.prototype.execute = function (state, delay) { + return (delay > 0 || this.closed) ? + _super.prototype.execute.call(this, state, delay) : + this._execute(state, delay); + }; + QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { delay = 0; } + if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + return scheduler.flush(this); + }; + return QueueAction; +}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[/* AsyncAction */ "a"])); +//# sourceMappingURL=QueueAction.js.map /***/ }), -/***/ "../../node_modules/p-filter/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueueScheduler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); -const pMap = __webpack_require__("../../node_modules/p-filter/node_modules/p-map/index.js"); - -const pFilter = async (iterable, filterer, options) => { - const values = await pMap( - iterable, - (element, index) => Promise.all([filterer(element, index), element]), - options - ); - return values.filter(value => Boolean(value[0])).map(value => value[1]); -}; -module.exports = pFilter; -// TODO: Remove this for the next major release -module.exports.default = pFilter; +var QueueScheduler = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(QueueScheduler, _super); + function QueueScheduler() { + return _super !== null && _super.apply(this, arguments) || this; + } + return QueueScheduler; +}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsyncScheduler */ "a"])); +//# sourceMappingURL=QueueScheduler.js.map /***/ }), -/***/ "../../node_modules/p-filter/node_modules/p-map/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return VirtualTimeScheduler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return VirtualAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); -const pMap = (iterable, mapper, options) => new Promise((resolve, reject) => { - options = Object.assign({ - concurrency: Infinity - }, options); - - if (typeof mapper !== 'function') { - throw new TypeError('Mapper function is required'); - } - const {concurrency} = options; - if (!(typeof concurrency === 'number' && concurrency >= 1)) { - throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${concurrency}\` (${typeof concurrency})`); - } +var VirtualTimeScheduler = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(VirtualTimeScheduler, _super); + function VirtualTimeScheduler(schedulerActionCtor, maxFrames) { + if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; } + if (maxFrames === void 0) { maxFrames = Infinity; } + var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this; + _this.maxFrames = maxFrames; + _this.frame = 0; + _this.index = -1; + return _this; + } + VirtualTimeScheduler.prototype.flush = function () { + var _a = this, actions = _a.actions, maxFrames = _a.maxFrames; + var error; + var action; + while ((action = actions[0]) && action.delay <= maxFrames) { + actions.shift(); + this.frame = action.delay; + if ((error = action.execute(action.state, action.delay))) { + break; + } + } + if (error) { + while ((action = actions.shift())) { + action.unsubscribe(); + } + throw error; + } + }; + VirtualTimeScheduler.frameTimeFactor = 10; + return VirtualTimeScheduler; +}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_3__[/* AsyncScheduler */ "a"])); - const ret = []; - const iterator = iterable[Symbol.iterator](); - let isRejected = false; - let isIterableDone = false; - let resolvingCount = 0; - let currentIndex = 0; +var VirtualAction = (function (_super) { + Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(VirtualAction, _super); + function VirtualAction(scheduler, work, index) { + if (index === void 0) { index = (scheduler.index += 1); } + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + _this.index = index; + _this.active = true; + _this.index = scheduler.index = index; + return _this; + } + VirtualAction.prototype.schedule = function (state, delay) { + if (delay === void 0) { delay = 0; } + if (Number.isFinite(delay)) { + if (!this.id) { + return _super.prototype.schedule.call(this, state, delay); + } + this.active = false; + var action = new VirtualAction(this.scheduler, this.work); + this.add(action); + return action.schedule(state, delay); + } + else { + return _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"].EMPTY; + } + }; + VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { delay = 0; } + this.delay = scheduler.frame + delay; + var actions = scheduler.actions; + actions.push(this); + actions.sort(VirtualAction.sortActions); + return true; + }; + VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { delay = 0; } + return undefined; + }; + VirtualAction.prototype._execute = function (state, delay) { + if (this.active === true) { + return _super.prototype._execute.call(this, state, delay); + } + }; + VirtualAction.sortActions = function (a, b) { + if (a.delay === b.delay) { + if (a.index === b.index) { + return 0; + } + else if (a.index > b.index) { + return 1; + } + else { + return -1; + } + } + else if (a.delay > b.delay) { + return 1; + } + else { + return -1; + } + }; + return VirtualAction; +}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[/* AsyncAction */ "a"])); - const next = () => { - if (isRejected) { - return; - } +//# sourceMappingURL=VirtualTimeScheduler.js.map - const nextItem = iterator.next(); - const i = currentIndex; - currentIndex++; +/***/ }), - if (nextItem.done) { - isIterableDone = true; +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (resolvingCount === 0) { - resolve(ret); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return animationFrameScheduler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return animationFrame; }); +/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js"); +/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js"); - return; - } - resolvingCount++; +var animationFrameScheduler = new _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AnimationFrameScheduler */ "a"](_AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__[/* AnimationFrameAction */ "a"]); +var animationFrame = animationFrameScheduler; +//# sourceMappingURL=animationFrame.js.map - Promise.resolve(nextItem.value) - .then(element => mapper(element, i)) - .then( - value => { - ret[i] = value; - resolvingCount--; - next(); - }, - error => { - isRejected = true; - reject(error); - } - ); - }; +/***/ }), - for (let i = 0; i < concurrency; i++) { - next(); +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (isIterableDone) { - break; - } - } -}); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return animationFrameProvider; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -module.exports = pMap; -// TODO: Remove this for the next major release -module.exports.default = pMap; +var animationFrameProvider = { + schedule: function (callback) { + var request = requestAnimationFrame; + var cancel = cancelAnimationFrame; + var delegate = animationFrameProvider.delegate; + if (delegate) { + request = delegate.requestAnimationFrame; + cancel = delegate.cancelAnimationFrame; + } + var handle = request(function (timestamp) { + cancel = undefined; + callback(timestamp); + }); + return new _Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"](function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); }); + }, + requestAnimationFrame: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var delegate = animationFrameProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); + }, + cancelAnimationFrame: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var delegate = animationFrameProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); + }, + delegate: undefined, +}; +//# sourceMappingURL=animationFrameProvider.js.map /***/ }), -/***/ "../../node_modules/p-finally/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/asap.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return asapScheduler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return asap; }); +/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js"); +/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js"); -module.exports = (promise, onFinally) => { - onFinally = onFinally || (() => {}); - - return promise.then( - val => new Promise(resolve => { - resolve(onFinally()); - }).then(() => val), - err => new Promise(resolve => { - resolve(onFinally()); - }).then(() => { - throw err; - }) - ); -}; +var asapScheduler = new _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsapScheduler */ "a"](_AsapAction__WEBPACK_IMPORTED_MODULE_0__[/* AsapAction */ "a"]); +var asap = asapScheduler; +//# sourceMappingURL=asap.js.map /***/ }), -/***/ "../../node_modules/parse-json/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return asyncScheduler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return async; }); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); -const errorEx = __webpack_require__("../../node_modules/error-ex/index.js"); -const fallback = __webpack_require__("../../node_modules/json-parse-better-errors/index.js"); -const {default: LinesAndColumns} = __webpack_require__("../../node_modules/lines-and-columns/dist/index.mjs"); -const {codeFrameColumns} = __webpack_require__("../../node_modules/@babel/code-frame/lib/index.js"); - -const JSONError = errorEx('JSONError', { - fileName: errorEx.append('in %s'), - codeFrame: errorEx.append('\n\n%s\n') -}); - -module.exports = (string, reviver, filename) => { - if (typeof reviver === 'string') { - filename = reviver; - reviver = null; - } - - try { - try { - return JSON.parse(string, reviver); - } catch (error) { - fallback(string, reviver); - throw error; - } - } catch (error) { - error.message = error.message.replace(/\n/g, ''); - const indexMatch = error.message.match(/in JSON at position (\d+) while parsing near/); - const jsonError = new JSONError(error); - if (filename) { - jsonError.fileName = filename; - } - - if (indexMatch && indexMatch.length > 0) { - const lines = new LinesAndColumns(string); - const index = Number(indexMatch[1]); - const location = lines.locationForIndex(index); +var asyncScheduler = new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsyncScheduler */ "a"](_AsyncAction__WEBPACK_IMPORTED_MODULE_0__[/* AsyncAction */ "a"]); +var async = asyncScheduler; +//# sourceMappingURL=async.js.map - const codeFrame = codeFrameColumns( - string, - {start: {line: location.line + 1, column: location.column + 1}}, - {highlightCode: true} - ); +/***/ }), - jsonError.codeFrame = codeFrame; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - throw jsonError; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return dateTimestampProvider; }); +var dateTimestampProvider = { + now: function () { + return (dateTimestampProvider.delegate || Date).now(); + }, + delegate: undefined, }; - +//# sourceMappingURL=dateTimestampProvider.js.map /***/ }), -/***/ "../../node_modules/pascalcase/index.js": -/***/ (function(module, exports) { - -/*! - * pascalcase - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function pascalcase(str) { - if (typeof str !== 'string') { - throw new TypeError('expected a string.'); - } - str = str.replace(/([A-Z])/g, ' $1'); - if (str.length === 1) { return str.toUpperCase(); } - str = str.replace(/^[\W_]+|[\W_]+$/g, '').toLowerCase(); - str = str.charAt(0).toUpperCase() + str.slice(1); - return str.replace(/[\W_]+(\w|$)/g, function (_, ch) { - return ch.toUpperCase(); - }); -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return immediateProvider; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/Immediate.js"); -module.exports = pascalcase; +var setImmediate = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__[/* Immediate */ "a"].setImmediate, clearImmediate = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__[/* Immediate */ "a"].clearImmediate; +var immediateProvider = { + setImmediate: function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var delegate = immediateProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); + }, + clearImmediate: function (handle) { + var delegate = immediateProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle); + }, + delegate: undefined, +}; +//# sourceMappingURL=immediateProvider.js.map /***/ }), -/***/ "../../node_modules/path-dirname/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return intervalProvider; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +var intervalProvider = { + setInterval: function (handler, timeout) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + var delegate = intervalProvider.delegate; + if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) { + return delegate.setInterval.apply(delegate, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); + } + return setInterval.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); + }, + clearInterval: function (handle) { + var delegate = intervalProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle); + }, + delegate: undefined, +}; +//# sourceMappingURL=intervalProvider.js.map -var path = __webpack_require__("path"); -var inspect = __webpack_require__("util").inspect; - -function assertPath(path) { - if (typeof path !== 'string') { - throw new TypeError('Path must be a string. Received ' + inspect(path)); - } -} - -function posix(path) { - assertPath(path); - if (path.length === 0) - return '.'; - var code = path.charCodeAt(0); - var hasRoot = (code === 47/*/*/); - var end = -1; - var matchedSlash = true; - for (var i = path.length - 1; i >= 1; --i) { - code = path.charCodeAt(i); - if (code === 47/*/*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } +/***/ }), - if (end === -1) - return hasRoot ? '/' : '.'; - if (hasRoot && end === 1) - return '//'; - return path.slice(0, end); -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function win32(path) { - assertPath(path); - var len = path.length; - if (len === 0) - return '.'; - var rootEnd = -1; - var end = -1; - var matchedSlash = true; - var offset = 0; - var code = path.charCodeAt(0); - - // Try to match a root - if (len > 1) { - if (code === 47/*/*/ || code === 92/*\*/) { - // Possible UNC root - - rootEnd = offset = 1; - - code = path.charCodeAt(1); - if (code === 47/*/*/ || code === 92/*\*/) { - // Matched double path separator at beginning - var j = 2; - var last = j; - // Match 1 or more non-path separators - for (; j < len; ++j) { - code = path.charCodeAt(j); - if (code === 47/*/*/ || code === 92/*\*/) - break; - } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more path separators - for (; j < len; ++j) { - code = path.charCodeAt(j); - if (code !== 47/*/*/ && code !== 92/*\*/) - break; - } - if (j < len && j !== last) { - // Matched! - last = j; - // Match 1 or more non-path separators - for (; j < len; ++j) { - code = path.charCodeAt(j); - if (code === 47/*/*/ || code === 92/*\*/) - break; - } - if (j === len) { - // We matched a UNC root only - return path; - } - if (j !== last) { - // We matched a UNC root with leftovers +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return performanceTimestampProvider; }); +var performanceTimestampProvider = { + now: function () { + return (performanceTimestampProvider.delegate || performance).now(); + }, + delegate: undefined, +}; +//# sourceMappingURL=performanceTimestampProvider.js.map - // Offset by 1 to include the separator after the UNC root to - // treat it as a "normal root" on top of a (UNC) root - rootEnd = offset = j + 1; - } - } - } - } - } else if ((code >= 65/*A*/ && code <= 90/*Z*/) || - (code >= 97/*a*/ && code <= 122/*z*/)) { - // Possible device root - - code = path.charCodeAt(1); - if (path.charCodeAt(1) === 58/*:*/) { - rootEnd = offset = 2; - if (len > 2) { - code = path.charCodeAt(2); - if (code === 47/*/*/ || code === 92/*\*/) - rootEnd = offset = 3; - } - } - } - } else if (code === 47/*/*/ || code === 92/*\*/) { - return path[0]; - } +/***/ }), - for (var i = len - 1; i >= offset; --i) { - code = path.charCodeAt(i); - if (code === 47/*/*/ || code === 92/*\*/) { - if (!matchedSlash) { - end = i; - break; - } - } else { - // We saw the first non-path separator - matchedSlash = false; - } - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/queue.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (end === -1) { - if (rootEnd === -1) - return '.'; - else - end = rootEnd; - } - return path.slice(0, end); -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return queueScheduler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return queue; }); +/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js"); +/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js"); -module.exports = process.platform === 'win32' ? win32 : posix; -module.exports.posix = posix; -module.exports.win32 = win32; +var queueScheduler = new _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__[/* QueueScheduler */ "a"](_QueueAction__WEBPACK_IMPORTED_MODULE_0__[/* QueueAction */ "a"]); +var queue = queueScheduler; +//# sourceMappingURL=queue.js.map /***/ }), -/***/ "../../node_modules/path-is-absolute/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timeoutProvider; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +var timeoutProvider = { + setTimeout: function (handler, timeout) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + var delegate = timeoutProvider.delegate; + if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) { + return delegate.setTimeout.apply(delegate, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); + } + return setTimeout.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); + }, + clearTimeout: function (handle) { + var delegate = timeoutProvider.delegate; + return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle); + }, + delegate: undefined, +}; +//# sourceMappingURL=timeoutProvider.js.map -function posix(path) { - return path.charAt(0) === '/'; -} +/***/ }), -function win32(path) { - // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 - var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; - var result = splitDeviceRe.exec(path); - var device = result[1] || ''; - var isUnc = Boolean(device && device.charAt(1) !== ':'); +/***/ "../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // UNC paths are always absolute - return Boolean(result[2] || isUnc); +"use strict"; +/* unused harmony export getSymbolIterator */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return iterator; }); +function getSymbolIterator() { + if (typeof Symbol !== 'function' || !Symbol.iterator) { + return '@@iterator'; + } + return Symbol.iterator; } - -module.exports = process.platform === 'win32' ? win32 : posix; -module.exports.posix = posix; -module.exports.win32 = win32; - +var iterator = getSymbolIterator(); +//# sourceMappingURL=iterator.js.map /***/ }), -/***/ "../../node_modules/path-parse/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return observable; }); +var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })(); +//# sourceMappingURL=observable.js.map +/***/ }), -var isWindows = process.platform === 'win32'; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -// Regex to split a windows path into into [dir, root, basename, name, ext] -var splitWindowsRe = - /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ArgumentOutOfRangeError; }); +/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); -var win32 = {}; +var ArgumentOutOfRangeError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { + return function ArgumentOutOfRangeErrorImpl() { + _super(this); + this.name = 'ArgumentOutOfRangeError'; + this.message = 'argument out of range'; + }; +}); +//# sourceMappingURL=ArgumentOutOfRangeError.js.map -function win32SplitPath(filename) { - return splitWindowsRe.exec(filename).slice(1); -} +/***/ }), -win32.parse = function(pathString) { - if (typeof pathString !== 'string') { - throw new TypeError( - "Parameter 'pathString' must be a string, not " + typeof pathString - ); - } - var allParts = win32SplitPath(pathString); - if (!allParts || allParts.length !== 5) { - throw new TypeError("Invalid path '" + pathString + "'"); - } - return { - root: allParts[1], - dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1), - base: allParts[2], - ext: allParts[4], - name: allParts[3] - }; -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EmptyError; }); +/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); +var EmptyError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { return function EmptyErrorImpl() { + _super(this); + this.name = 'EmptyError'; + this.message = 'no elements in sequence'; +}; }); +//# sourceMappingURL=EmptyError.js.map -// Split a filename into [dir, root, basename, name, ext], unix version -// 'root' is just a slash, or nothing. -var splitPathRe = - /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/; -var posix = {}; +/***/ }), +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/Immediate.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -function posixSplitPath(filename) { - return splitPathRe.exec(filename).slice(1); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Immediate; }); +/* unused harmony export TestTools */ +var nextHandle = 1; +var resolved; +var activeHandles = {}; +function findAndClearHandle(handle) { + if (handle in activeHandles) { + delete activeHandles[handle]; + return true; + } + return false; } - - -posix.parse = function(pathString) { - if (typeof pathString !== 'string') { - throw new TypeError( - "Parameter 'pathString' must be a string, not " + typeof pathString - ); - } - var allParts = posixSplitPath(pathString); - if (!allParts || allParts.length !== 5) { - throw new TypeError("Invalid path '" + pathString + "'"); - } - - return { - root: allParts[1], - dir: allParts[0].slice(0, -1), - base: allParts[2], - ext: allParts[4], - name: allParts[3], - }; +var Immediate = { + setImmediate: function (cb) { + var handle = nextHandle++; + activeHandles[handle] = true; + if (!resolved) { + resolved = Promise.resolve(); + } + resolved.then(function () { return findAndClearHandle(handle) && cb(); }); + return handle; + }, + clearImmediate: function (handle) { + findAndClearHandle(handle); + }, +}; +var TestTools = { + pending: function () { + return Object.keys(activeHandles).length; + } }; +//# sourceMappingURL=Immediate.js.map +/***/ }), -if (isWindows) - module.exports = win32.parse; -else /* posix */ - module.exports = posix.parse; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -module.exports.posix = posix.parse; -module.exports.win32 = win32.parse; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NotFoundError; }); +/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); +var NotFoundError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { + return function NotFoundErrorImpl(message) { + _super(this); + this.name = 'NotFoundError'; + this.message = message; + }; +}); +//# sourceMappingURL=NotFoundError.js.map /***/ }), -/***/ "../../node_modules/path-type/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObjectUnsubscribedError; }); +/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); -const {promisify} = __webpack_require__("util"); -const fs = __webpack_require__("fs"); +var ObjectUnsubscribedError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { + return function ObjectUnsubscribedErrorImpl() { + _super(this); + this.name = 'ObjectUnsubscribedError'; + this.message = 'object unsubscribed'; + }; +}); +//# sourceMappingURL=ObjectUnsubscribedError.js.map -async function isType(fsStatType, statsMethodName, filePath) { - if (typeof filePath !== 'string') { - throw new TypeError(`Expected a string, got ${typeof filePath}`); - } +/***/ }), - try { - const stats = await promisify(fs[fsStatType])(filePath); - return stats[statsMethodName](); - } catch (error) { - if (error.code === 'ENOENT') { - return false; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - throw error; - } -} +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SequenceError; }); +/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); -function isTypeSync(fsStatType, statsMethodName, filePath) { - if (typeof filePath !== 'string') { - throw new TypeError(`Expected a string, got ${typeof filePath}`); - } +var SequenceError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { + return function SequenceErrorImpl(message) { + _super(this); + this.name = 'SequenceError'; + this.message = message; + }; +}); +//# sourceMappingURL=SequenceError.js.map - try { - return fs[fsStatType](filePath)[statsMethodName](); - } catch (error) { - if (error.code === 'ENOENT') { - return false; - } +/***/ }), - throw error; - } -} +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -exports.isFile = isType.bind(null, 'stat', 'isFile'); -exports.isDirectory = isType.bind(null, 'stat', 'isDirectory'); -exports.isSymlink = isType.bind(null, 'lstat', 'isSymbolicLink'); -exports.isFileSync = isTypeSync.bind(null, 'statSync', 'isFile'); -exports.isDirectorySync = isTypeSync.bind(null, 'statSync', 'isDirectory'); -exports.isSymlinkSync = isTypeSync.bind(null, 'lstatSync', 'isSymbolicLink'); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return UnsubscriptionError; }); +/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); +var UnsubscriptionError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { + return function UnsubscriptionErrorImpl(errors) { + _super(this); + this.message = errors + ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n ') + : ''; + this.name = 'UnsubscriptionError'; + this.errors = errors; + }; +}); +//# sourceMappingURL=UnsubscriptionError.js.map /***/ }), -/***/ "../../node_modules/picomatch/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/args.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return popResultSelector; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return popScheduler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return popNumber; }); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); +/* harmony import */ var _isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js"); -module.exports = __webpack_require__("../../node_modules/picomatch/lib/picomatch.js"); - +function last(arr) { + return arr[arr.length - 1]; +} +function popResultSelector(args) { + return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(last(args)) ? args.pop() : undefined; +} +function popScheduler(args) { + return Object(_isScheduler__WEBPACK_IMPORTED_MODULE_1__[/* isScheduler */ "a"])(last(args)) ? args.pop() : undefined; +} +function popNumber(args, defaultValue) { + return typeof last(args) === 'number' ? args.pop() : defaultValue; +} +//# sourceMappingURL=args.js.map /***/ }), -/***/ "../../node_modules/picomatch/lib/constants.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return argsArgArrayOrObject; }); +var isArray = Array.isArray; +var getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys; +function argsArgArrayOrObject(args) { + if (args.length === 1) { + var first_1 = args[0]; + if (isArray(first_1)) { + return { args: first_1, keys: null }; + } + if (isPOJO(first_1)) { + var keys = getKeys(first_1); + return { + args: keys.map(function (key) { return first_1[key]; }), + keys: keys, + }; + } + } + return { args: args, keys: null }; +} +function isPOJO(obj) { + return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto; +} +//# sourceMappingURL=argsArgArrayOrObject.js.map +/***/ }), -const path = __webpack_require__("path"); -const WIN_SLASH = '\\\\/'; -const WIN_NO_SLASH = `[^${WIN_SLASH}]`; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Posix glob regex - */ - -const DOT_LITERAL = '\\.'; -const PLUS_LITERAL = '\\+'; -const QMARK_LITERAL = '\\?'; -const SLASH_LITERAL = '\\/'; -const ONE_CHAR = '(?=.)'; -const QMARK = '[^/]'; -const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; -const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; -const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; -const NO_DOT = `(?!${DOT_LITERAL})`; -const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; -const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; -const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; -const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; -const STAR = `${QMARK}*?`; - -const POSIX_CHARS = { - DOT_LITERAL, - PLUS_LITERAL, - QMARK_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - QMARK, - END_ANCHOR, - DOTS_SLASH, - NO_DOT, - NO_DOTS, - NO_DOT_SLASH, - NO_DOTS_SLASH, - QMARK_NO_DOT, - STAR, - START_ANCHOR -}; - -/** - * Windows glob regex - */ - -const WINDOWS_CHARS = { - ...POSIX_CHARS, - - SLASH_LITERAL: `[${WIN_SLASH}]`, - QMARK: WIN_NO_SLASH, - STAR: `${WIN_NO_SLASH}*?`, - DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, - NO_DOT: `(?!${DOT_LITERAL})`, - NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, - NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, - NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, - QMARK_NO_DOT: `[^.${WIN_SLASH}]`, - START_ANCHOR: `(?:^|[${WIN_SLASH}])`, - END_ANCHOR: `(?:[${WIN_SLASH}]|$)` -}; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return argsOrArgArray; }); +var isArray = Array.isArray; +function argsOrArgArray(args) { + return args.length === 1 && isArray(args[0]) ? args[0] : args; +} +//# sourceMappingURL=argsOrArgArray.js.map -/** - * POSIX Bracket Regex - */ +/***/ }), -const POSIX_REGEX_SOURCE = { - alnum: 'a-zA-Z0-9', - alpha: 'a-zA-Z', - ascii: '\\x00-\\x7F', - blank: ' \\t', - cntrl: '\\x00-\\x1F\\x7F', - digit: '0-9', - graph: '\\x21-\\x7E', - lower: 'a-z', - print: '\\x20-\\x7E ', - punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', - space: ' \\t\\r\\n\\v\\f', - upper: 'A-Z', - word: 'A-Za-z0-9_', - xdigit: 'A-Fa-f0-9' -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -module.exports = { - MAX_LENGTH: 1024 * 64, - POSIX_REGEX_SOURCE, +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return arrRemove; }); +function arrRemove(arr, item) { + if (arr) { + var index = arr.indexOf(item); + 0 <= index && arr.splice(index, 1); + } +} +//# sourceMappingURL=arrRemove.js.map - // regular expressions - REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, - REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, - REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, - REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, - REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, - REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, +/***/ }), - // Replace globs with equivalent patterns to reduce parsing time. - REPLACEMENTS: { - '***': '*', - '**/**': '**', - '**/**/**': '**' - }, +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // Digits - CHAR_0: 48, /* 0 */ - CHAR_9: 57, /* 9 */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createErrorClass; }); +function createErrorClass(createImpl) { + var _super = function (instance) { + Error.call(instance); + instance.stack = new Error().stack; + }; + var ctorFunc = createImpl(_super); + ctorFunc.prototype = Object.create(Error.prototype); + ctorFunc.prototype.constructor = ctorFunc; + return ctorFunc; +} +//# sourceMappingURL=createErrorClass.js.map - // Alphabet chars. - CHAR_UPPERCASE_A: 65, /* A */ - CHAR_LOWERCASE_A: 97, /* a */ - CHAR_UPPERCASE_Z: 90, /* Z */ - CHAR_LOWERCASE_Z: 122, /* z */ +/***/ }), - CHAR_LEFT_PARENTHESES: 40, /* ( */ - CHAR_RIGHT_PARENTHESES: 41, /* ) */ +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/createObject.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - CHAR_ASTERISK: 42, /* * */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createObject; }); +function createObject(keys, values) { + return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {}); +} +//# sourceMappingURL=createObject.js.map - // Non-alphabetic chars. - CHAR_AMPERSAND: 38, /* & */ - CHAR_AT: 64, /* @ */ - CHAR_BACKWARD_SLASH: 92, /* \ */ - CHAR_CARRIAGE_RETURN: 13, /* \r */ - CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ - CHAR_COLON: 58, /* : */ - CHAR_COMMA: 44, /* , */ - CHAR_DOT: 46, /* . */ - CHAR_DOUBLE_QUOTE: 34, /* " */ - CHAR_EQUAL: 61, /* = */ - CHAR_EXCLAMATION_MARK: 33, /* ! */ - CHAR_FORM_FEED: 12, /* \f */ - CHAR_FORWARD_SLASH: 47, /* / */ - CHAR_GRAVE_ACCENT: 96, /* ` */ - CHAR_HASH: 35, /* # */ - CHAR_HYPHEN_MINUS: 45, /* - */ - CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ - CHAR_LEFT_CURLY_BRACE: 123, /* { */ - CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ - CHAR_LINE_FEED: 10, /* \n */ - CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ - CHAR_PERCENT: 37, /* % */ - CHAR_PLUS: 43, /* + */ - CHAR_QUESTION_MARK: 63, /* ? */ - CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ - CHAR_RIGHT_CURLY_BRACE: 125, /* } */ - CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ - CHAR_SEMICOLON: 59, /* ; */ - CHAR_SINGLE_QUOTE: 39, /* ' */ - CHAR_SPACE: 32, /* */ - CHAR_TAB: 9, /* \t */ - CHAR_UNDERSCORE: 95, /* _ */ - CHAR_VERTICAL_LINE: 124, /* | */ - CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ +/***/ }), - SEP: path.sep, +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - /** - * Create EXTGLOB_CHARS - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return errorContext; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return captureError; }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); - extglobChars(chars) { - return { - '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, - '?': { type: 'qmark', open: '(?:', close: ')?' }, - '+': { type: 'plus', open: '(?:', close: ')+' }, - '*': { type: 'star', open: '(?:', close: ')*' }, - '@': { type: 'at', open: '(?:', close: ')' } - }; - }, +var context = null; +function errorContext(cb) { + if (_config__WEBPACK_IMPORTED_MODULE_0__[/* config */ "a"].useDeprecatedSynchronousErrorHandling) { + var isRoot = !context; + if (isRoot) { + context = { errorThrown: false, error: null }; + } + cb(); + if (isRoot) { + var _a = context, errorThrown = _a.errorThrown, error = _a.error; + context = null; + if (errorThrown) { + throw error; + } + } + } + else { + cb(); + } +} +function captureError(err) { + if (_config__WEBPACK_IMPORTED_MODULE_0__[/* config */ "a"].useDeprecatedSynchronousErrorHandling && context) { + context.errorThrown = true; + context.error = err; + } +} +//# sourceMappingURL=errorContext.js.map - /** - * Create GLOB_CHARS - */ +/***/ }), - globChars(win32) { - return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; - } -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return executeSchedule; }); +function executeSchedule(parentSubscription, scheduler, work, delay, repeat) { + if (delay === void 0) { delay = 0; } + if (repeat === void 0) { repeat = false; } + var scheduleSubscription = scheduler.schedule(function () { + work(); + if (repeat) { + parentSubscription.add(this.schedule(null, delay)); + } + else { + this.unsubscribe(); + } + }, delay); + parentSubscription.add(scheduleSubscription); + if (!repeat) { + return scheduleSubscription; + } +} +//# sourceMappingURL=executeSchedule.js.map /***/ }), -/***/ "../../node_modules/picomatch/lib/parse.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/identity.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return identity; }); +function identity(x) { + return x; +} +//# sourceMappingURL=identity.js.map +/***/ }), -const constants = __webpack_require__("../../node_modules/picomatch/lib/constants.js"); -const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); - -/** - * Constants - */ - -const { - MAX_LENGTH, - POSIX_REGEX_SOURCE, - REGEX_NON_SPECIAL_CHARS, - REGEX_SPECIAL_CHARS_BACKREF, - REPLACEMENTS -} = constants; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Helpers - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isArrayLike; }); +var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; }); +//# sourceMappingURL=isArrayLike.js.map -const expandRange = (args, options) => { - if (typeof options.expandRange === 'function') { - return options.expandRange(...args, options); - } +/***/ }), - args.sort(); - const value = `[${args.join('-')}]`; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - try { - /* eslint-disable-next-line no-new */ - new RegExp(value); - } catch (ex) { - return args.map(v => utils.escapeRegex(v)).join('..'); - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isAsyncIterable; }); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - return value; -}; +function isAsyncIterable(obj) { + return Symbol.asyncIterator && Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]); +} +//# sourceMappingURL=isAsyncIterable.js.map -/** - * Create the message for a syntax error - */ +/***/ }), -const syntaxError = (type, char) => { - return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; -}; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isDate.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { -/** - * Parse the given input string. - * @param {String} input - * @param {Object} options - * @return {Object} - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isValidDate; }); +function isValidDate(value) { + return value instanceof Date && !isNaN(value); +} +//# sourceMappingURL=isDate.js.map -const parse = (input, options) => { - if (typeof input !== 'string') { - throw new TypeError('Expected a string'); - } +/***/ }), - input = REPLACEMENTS[input] || input; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const opts = { ...options }; - const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isFunction; }); +function isFunction(value) { + return typeof value === 'function'; +} +//# sourceMappingURL=isFunction.js.map - let len = input.length; - if (len > max) { - throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); - } +/***/ }), - const bos = { type: 'bos', value: '', output: opts.prepend || '' }; - const tokens = [bos]; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const capture = opts.capture ? '' : '?:'; - const win32 = utils.isWindows(options); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isInteropObservable; }); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js"); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - // create constants based on platform, for windows or posix - const PLATFORM_CHARS = constants.globChars(win32); - const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); - const { - DOT_LITERAL, - PLUS_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - DOTS_SLASH, - NO_DOT, - NO_DOT_SLASH, - NO_DOTS_SLASH, - QMARK, - QMARK_NO_DOT, - STAR, - START_ANCHOR - } = PLATFORM_CHARS; +function isInteropObservable(input) { + return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(input[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__[/* observable */ "a"]]); +} +//# sourceMappingURL=isInteropObservable.js.map - const globstar = opts => { - return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; - }; +/***/ }), - const nodot = opts.dot ? '' : NO_DOT; - const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; - let star = opts.bash === true ? globstar(opts) : STAR; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (opts.capture) { - star = `(${star})`; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isIterable; }); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js"); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - // minimatch options support - if (typeof opts.noext === 'boolean') { - opts.noextglob = opts.noext; - } - const state = { - input, - index: -1, - start: 0, - dot: opts.dot === true, - consumed: '', - output: '', - prefix: '', - backtrack: false, - negated: false, - brackets: 0, - braces: 0, - parens: 0, - quotes: 0, - globstar: false, - tokens - }; +function isIterable(input) { + return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(input === null || input === void 0 ? void 0 : input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__[/* iterator */ "a"]]); +} +//# sourceMappingURL=isIterable.js.map - input = utils.removePrefix(input, state); - len = input.length; +/***/ }), - const extglobs = []; - const braces = []; - const stack = []; - let prev = bos; - let value; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isObservable.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - /** - * Tokenizing helpers - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isObservable; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - const eos = () => state.index === len - 1; - const peek = state.peek = (n = 1) => input[state.index + n]; - const advance = state.advance = () => input[++state.index] || ''; - const remaining = () => input.slice(state.index + 1); - const consume = (value = '', num = 0) => { - state.consumed += value; - state.index += num; - }; - const append = token => { - state.output += token.output != null ? token.output : token.value; - consume(token.value); - }; +function isObservable(obj) { + return !!obj && (obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"] || (Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(obj.lift) && Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(obj.subscribe))); +} +//# sourceMappingURL=isObservable.js.map - const negate = () => { - let count = 1; +/***/ }), - while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) { - advance(); - state.start++; - count++; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (count % 2 === 0) { - return false; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isPromise; }); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - state.negated = true; - state.start++; - return true; - }; +function isPromise(value) { + return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(value === null || value === void 0 ? void 0 : value.then); +} +//# sourceMappingURL=isPromise.js.map - const increment = type => { - state[type]++; - stack.push(type); - }; +/***/ }), - const decrement = type => { - state[type]--; - stack.pop(); - }; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - /** - * Push tokens onto the tokens array. This helper speeds up - * tokenizing by 1) helping us avoid backtracking as much as possible, - * and 2) helping us avoid creating extra tokens when consecutive - * characters are plain text. This improves performance and simplifies - * lookbehinds. - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return readableStreamLikeToAsyncGenerator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isReadableStreamLike; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - const push = tok => { - if (prev.type === 'globstar') { - const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); - const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren')); - if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { - state.output = state.output.slice(0, -prev.output.length); - prev.type = 'star'; - prev.value = '*'; - prev.output = star; - state.output += prev.output; - } - } +function readableStreamLikeToAsyncGenerator(readableStream) { + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __asyncGenerator */ "a"])(this, arguments, function readableStreamLikeToAsyncGenerator_1() { + var reader, _a, value, done; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "f"])(this, function (_b) { + switch (_b.label) { + case 0: + reader = readableStream.getReader(); + _b.label = 1; + case 1: + _b.trys.push([1, , 9, 10]); + _b.label = 2; + case 2: + if (false) {} + return [4, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __await */ "c"])(reader.read())]; + case 3: + _a = _b.sent(), value = _a.value, done = _a.done; + if (!done) return [3, 5]; + return [4, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __await */ "c"])(void 0)]; + case 4: return [2, _b.sent()]; + case 5: return [4, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __await */ "c"])(value)]; + case 6: return [4, _b.sent()]; + case 7: + _b.sent(); + return [3, 2]; + case 8: return [3, 10]; + case 9: + reader.releaseLock(); + return [7]; + case 10: return [2]; + } + }); + }); +} +function isReadableStreamLike(obj) { + return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(obj === null || obj === void 0 ? void 0 : obj.getReader); +} +//# sourceMappingURL=isReadableStreamLike.js.map - if (extglobs.length && tok.type !== 'paren') { - extglobs[extglobs.length - 1].inner += tok.value; - } +/***/ }), - if (tok.value || tok.output) append(tok); - if (prev && prev.type === 'text' && tok.type === 'text') { - prev.value += tok.value; - prev.output = (prev.output || '') + tok.value; - return; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - tok.prev = prev; - tokens.push(tok); - prev = tok; - }; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isScheduler; }); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - const extglobOpen = (type, value) => { - const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; +function isScheduler(value) { + return value && Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(value.schedule); +} +//# sourceMappingURL=isScheduler.js.map - token.prev = prev; - token.parens = state.parens; - token.output = state.output; - const output = (opts.capture ? '(' : '') + token.open; +/***/ }), - increment('parens'); - push({ type, value, output: state.output ? '' : ONE_CHAR }); - push({ type: 'paren', extglob: true, value: advance(), output }); - extglobs.push(token); - }; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/lift.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - const extglobClose = token => { - let output = token.close + (opts.capture ? ')' : ''); - let rest; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return hasLift; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return operate; }); +/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - if (token.type === 'negate') { - let extglobStar = star; +function hasLift(source) { + return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(source === null || source === void 0 ? void 0 : source.lift); +} +function operate(init) { + return function (source) { + if (hasLift(source)) { + return source.lift(function (liftedSource) { + try { + return init(liftedSource, this); + } + catch (err) { + this.error(err); + } + }); + } + throw new TypeError('Unable to lift unknown Observable type'); + }; +} +//# sourceMappingURL=lift.js.map - if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { - extglobStar = globstar(opts); - } +/***/ }), - if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { - output = token.close = `)$))${extglobStar}`; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (token.inner.includes('*') && (rest = remaining()) && /^\.[^\\/.]+$/.test(rest)) { - output = token.close = `)${rest})${extglobStar})`; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mapOneOrManyArgs; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); - if (token.prev.type === 'bos') { - state.negatedExtglob = true; - } - } - push({ type: 'paren', extglob: true, value, output }); - decrement('parens'); - }; +var isArray = Array.isArray; +function callOrApply(fn, args) { + return isArray(args) ? fn.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))) : fn(args); +} +function mapOneOrManyArgs(fn) { + return Object(_operators_map__WEBPACK_IMPORTED_MODULE_1__[/* map */ "a"])(function (args) { return callOrApply(fn, args); }); +} +//# sourceMappingURL=mapOneOrManyArgs.js.map - /** - * Fast paths - */ +/***/ }), - if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { - let backslashes = false; +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/noop.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { - if (first === '\\') { - backslashes = true; - return m; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return noop; }); +function noop() { } +//# sourceMappingURL=noop.js.map - if (first === '?') { - if (esc) { - return esc + first + (rest ? QMARK.repeat(rest.length) : ''); - } - if (index === 0) { - return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); - } - return QMARK.repeat(chars.length); - } +/***/ }), - if (first === '.') { - return DOT_LITERAL.repeat(chars.length); - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/not.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (first === '*') { - if (esc) { - return esc + first + (rest ? star : ''); - } - return star; - } - return esc ? m : `\\${m}`; - }); +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return not; }); +function not(pred, thisArg) { + return function (value, index) { return !pred.call(thisArg, value, index); }; +} +//# sourceMappingURL=not.js.map - if (backslashes === true) { - if (opts.unescape === true) { - output = output.replace(/\\/g, ''); - } else { - output = output.replace(/\\+/g, m => { - return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); - }); - } - } +/***/ }), - if (output === input && opts.contains === true) { - state.output = input; - return state; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/pipe.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - state.output = utils.wrapOutput(output, state, options); - return state; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pipe; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return pipeFromArray; }); +/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - /** - * Tokenize input until we reach end-of-string - */ +function pipe() { + var fns = []; + for (var _i = 0; _i < arguments.length; _i++) { + fns[_i] = arguments[_i]; + } + return pipeFromArray(fns); +} +function pipeFromArray(fns) { + if (fns.length === 0) { + return _identity__WEBPACK_IMPORTED_MODULE_0__[/* identity */ "a"]; + } + if (fns.length === 1) { + return fns[0]; + } + return function piped(input) { + return fns.reduce(function (prev, fn) { return fn(prev); }, input); + }; +} +//# sourceMappingURL=pipe.js.map - while (!eos()) { - value = advance(); +/***/ }), - if (value === '\u0000') { - continue; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - /** - * Escaped characters - */ +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return reportUnhandledError; }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); +/* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js"); - if (value === '\\') { - const next = peek(); - if (next === '/' && opts.bash !== true) { - continue; - } +function reportUnhandledError(err) { + _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_1__[/* timeoutProvider */ "a"].setTimeout(function () { + var onUnhandledError = _config__WEBPACK_IMPORTED_MODULE_0__[/* config */ "a"].onUnhandledError; + if (onUnhandledError) { + onUnhandledError(err); + } + else { + throw err; + } + }); +} +//# sourceMappingURL=reportUnhandledError.js.map - if (next === '.' || next === ';') { - continue; - } +/***/ }), - if (!next) { - value += '\\'; - push({ type: 'text', value }); - continue; - } +/***/ "../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - // collapse slashes to reduce potential for exploits - const match = /^\\+/.exec(remaining()); - let slashes = 0; +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createInvalidObservableTypeError; }); +function createInvalidObservableTypeError(input) { + return new TypeError("You provided " + (input !== null && typeof input === 'object' ? 'an invalid object' : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable."); +} +//# sourceMappingURL=throwUnobservableError.js.map - if (match && match[0].length > 2) { - slashes = match[0].length; - state.index += slashes; - if (slashes % 2 !== 0) { - value += '\\'; - } - } +/***/ }), - if (opts.unescape === true) { - value = advance(); - } else { - value += advance(); - } +/***/ "../../node_modules/rxjs/dist/esm5/operators/index.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (state.brackets === 0) { - push({ type: 'text', value }); - continue; - } - } +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/audit.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["a"]; }); - /** - * If we're inside a regex character class, continue - * until we reach the closing bracket. - */ +/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/auditTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["a"]; }); - if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { - if (opts.posix !== false && value === ':') { - const inner = prev.value.slice(1); - if (inner.includes('[')) { - prev.posix = true; +/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["a"]; }); - if (inner.includes(':')) { - const idx = prev.value.lastIndexOf('['); - const pre = prev.value.slice(0, idx); - const rest = prev.value.slice(idx + 2); - const posix = POSIX_REGEX_SOURCE[rest]; - if (posix) { - prev.value = pre + posix; - state.backtrack = true; - advance(); +/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["a"]; }); - if (!bos.output && tokens.indexOf(prev) === 1) { - bos.output = ONE_CHAR; - } - continue; - } - } - } - } +/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["a"]; }); - if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { - value = `\\${value}`; - } +/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["a"]; }); - if (value === ']' && (prev.value === '[' || prev.value === '[^')) { - value = `\\${value}`; - } +/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["a"]; }); - if (opts.posix === true && value === '!' && prev.value === '[') { - value = '^'; - } +/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["a"]; }); - prev.value += value; - append({ value }); - continue; - } +/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["a"]; }); - /** - * If we're inside a quoted string, continue - * until we reach the closing double quote. - */ +/* harmony import */ var _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestAll", function() { return _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_9__["a"]; }); - if (state.quotes === 1 && value !== '"') { - value = utils.escapeRegex(value); - prev.value += value; - append({ value }); - continue; - } +/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_10__["a"]; }); - /** - * Double quotes - */ +/* harmony import */ var _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestWith", function() { return _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_11__["a"]; }); - if (value === '"') { - state.quotes = state.quotes === 1 ? 0 : 1; - if (opts.keepQuotes === true) { - push({ type: 'text', value }); - } - continue; - } +/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_12__["a"]; }); - /** - * Parentheses - */ +/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_13__["a"]; }); - if (value === '(') { - increment('parens'); - push({ type: 'paren', value }); - continue; - } +/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_14__["a"]; }); - if (value === ')') { - if (state.parens === 0 && opts.strictBrackets === true) { - throw new SyntaxError(syntaxError('opening', '(')); - } +/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_15__["a"]; }); - const extglob = extglobs[extglobs.length - 1]; - if (extglob && state.parens === extglob.parens + 1) { - extglobClose(extglobs.pop()); - continue; - } +/* harmony import */ var _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatWith", function() { return _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_16__["a"]; }); - push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); - decrement('parens'); - continue; - } +/* harmony import */ var _internal_operators_connect__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/connect.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return _internal_operators_connect__WEBPACK_IMPORTED_MODULE_17__["a"]; }); - /** - * Square brackets - */ +/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/count.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_18__["a"]; }); - if (value === '[') { - if (opts.nobracket === true || !remaining().includes(']')) { - if (opts.nobracket !== true && opts.strictBrackets === true) { - throw new SyntaxError(syntaxError('closing', ']')); - } +/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/debounce.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_19__["a"]; }); - value = `\\${value}`; - } else { - increment('brackets'); - } +/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_20__["a"]; }); - push({ type: 'bracket', value }); - continue; - } +/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_21__["a"]; }); - if (value === ']') { - if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { - push({ type: 'text', value, output: `\\${value}` }); - continue; - } +/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_22__["a"]; }); - if (state.brackets === 0) { - if (opts.strictBrackets === true) { - throw new SyntaxError(syntaxError('opening', '[')); - } +/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_23__["a"]; }); - push({ type: 'text', value, output: `\\${value}` }); - continue; - } +/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_24__["a"]; }); - decrement('brackets'); +/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinct.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_25__["a"]; }); - const prevValue = prev.value.slice(1); - if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { - value = `/${value}`; - } +/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_26__["a"]; }); - prev.value += value; - append({ value }); +/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_27__["a"]; }); - // when literal brackets are explicitly disabled - // assume we should match with a regex character class - if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { - continue; - } +/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/elementAt.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_28__["a"]; }); - const escaped = utils.escapeRegex(prev.value); - state.output = state.output.slice(0, -prev.value.length); +/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/endWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_29__["a"]; }); - // when literal brackets are explicitly enabled - // assume we should escape the brackets to match literal characters - if (opts.literalBrackets === true) { - state.output += escaped; - prev.value = escaped; - continue; - } +/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/every.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_30__["a"]; }); - // when the user specifies nothing, try to match both - prev.value = `(${capture}${escaped}|${prev.value})`; - state.output += prev.value; - continue; - } +/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaust.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_31__["a"]; }); - /** - * Braces - */ +/* harmony import */ var _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustAll", function() { return _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_32__["a"]; }); - if (value === '{' && opts.nobrace !== true) { - increment('braces'); +/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_33__["a"]; }); - const open = { - type: 'brace', - value, - output: '(', - outputIndex: state.output.length, - tokensIndex: state.tokens.length - }; +/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/expand.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_34__["a"]; }); - braces.push(open); - push(open); - continue; - } +/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_35__["a"]; }); - if (value === '}') { - const brace = braces[braces.length - 1]; +/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/finalize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_36__["a"]; }); - if (opts.nobrace === true || !brace) { - push({ type: 'text', value, output: value }); - continue; - } +/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/find.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_37__["b"]; }); - let output = ')'; +/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/findIndex.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_38__["a"]; }); - if (brace.dots === true) { - const arr = tokens.slice(); - const range = []; +/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/first.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_39__["a"]; }); - for (let i = arr.length - 1; i >= 0; i--) { - tokens.pop(); - if (arr[i].type === 'brace') { - break; - } - if (arr[i].type !== 'dots') { - range.unshift(arr[i].value); - } - } +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/groupBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_40__["a"]; }); - output = expandRange(range, opts); - state.backtrack = true; - } +/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_41__["a"]; }); - if (brace.comma !== true && brace.dots !== true) { - const out = state.output.slice(0, brace.outputIndex); - const toks = state.tokens.slice(brace.tokensIndex); - brace.value = brace.output = '\\{'; - value = output = '\\}'; - state.output = out; - for (const t of toks) { - state.output += (t.output || t.value); - } - } +/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_42__["a"]; }); - push({ type: 'brace', value, output }); - decrement('braces'); - braces.pop(); - continue; - } +/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/last.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_43__["a"]; }); - /** - * Pipes - */ +/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_44__["a"]; }); - if (value === '|') { - if (extglobs.length > 0) { - extglobs[extglobs.length - 1].conditions++; - } - push({ type: 'text', value }); - continue; - } +/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_45__["a"]; }); - /** - * Commas - */ +/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/materialize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_46__["a"]; }); - if (value === ',') { - let output = value; +/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/max.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_47__["a"]; }); - const brace = braces[braces.length - 1]; - if (brace && stack[stack.length - 1] === 'braces') { - brace.comma = true; - output = '|'; - } +/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/merge.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_48__["a"]; }); - push({ type: 'comma', value, output }); - continue; - } +/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_49__["a"]; }); - /** - * Slashes - */ +/* harmony import */ var _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/flatMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_50__["a"]; }); - if (value === '/') { - // if the beginning of the glob is "./", advance the start - // to the current index, and don't add the "./" characters - // to the state. This greatly simplifies lookbehinds when - // checking for BOS characters like "!" and "." (not "./") - if (prev.type === 'dot' && state.index === state.start + 1) { - state.start = state.index + 1; - state.consumed = ''; - state.output = ''; - tokens.pop(); - prev = bos; // reset "prev" to the first token - continue; - } +/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_51__["a"]; }); - push({ type: 'slash', value, output: SLASH_LITERAL }); - continue; - } +/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_52__["a"]; }); - /** - * Dots - */ +/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_53__["a"]; }); - if (value === '.') { - if (state.braces > 0 && prev.type === 'dot') { - if (prev.value === '.') prev.output = DOT_LITERAL; - const brace = braces[braces.length - 1]; - prev.type = 'dots'; - prev.output += value; - prev.value += value; - brace.dots = true; - continue; - } +/* harmony import */ var _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_54__["a"]; }); - if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') { - push({ type: 'text', value, output: DOT_LITERAL }); - continue; - } +/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/min.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_55__["a"]; }); - push({ type: 'dot', value, output: DOT_LITERAL }); - continue; - } +/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_56__["a"]; }); - /** - * Question marks - */ +/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_57__["a"]; }); - if (value === '?') { - const isGroup = prev && prev.value === '('; - if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { - extglobOpen('qmark', value); - continue; - } +/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_58__["a"]; }); - if (prev && prev.type === 'paren') { - const next = peek(); - let output = value; +/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_59__["a"]; }); - if (next === '<' && !utils.supportsLookbehinds()) { - throw new Error('Node.js v10 or higher is required for regex lookbehinds'); - } +/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/partition.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_60__["a"]; }); - if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) { - output = `\\${value}`; - } +/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/pluck.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_61__["a"]; }); - push({ type: 'text', value, output }); - continue; - } +/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publish.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_62__["a"]; }); - if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { - push({ type: 'qmark', value, output: QMARK_NO_DOT }); - continue; - } +/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_63__["a"]; }); - push({ type: 'qmark', value, output: QMARK }); - continue; - } +/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_64__["a"]; }); - /** - * Exclamation - */ +/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_65__["a"]; }); - if (value === '!') { - if (opts.noextglob !== true && peek() === '(') { - if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { - extglobOpen('negate', value); - continue; - } - } +/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/race.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_66__["a"]; }); - if (opts.nonegate !== true && state.index === 0) { - negate(); - continue; - } - } +/* harmony import */ var _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/raceWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "raceWith", function() { return _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_67__["a"]; }); - /** - * Plus - */ +/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_68__["a"]; }); - if (value === '+') { - if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { - extglobOpen('plus', value); - continue; - } +/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/repeat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_69__["a"]; }); - if ((prev && prev.value === '(') || opts.regex === false) { - push({ type: 'plus', value, output: PLUS_LITERAL }); - continue; - } +/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_70__["a"]; }); - if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) { - push({ type: 'plus', value }); - continue; - } +/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/retry.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_71__["a"]; }); - push({ type: 'plus', value: PLUS_LITERAL }); - continue; - } +/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_72__["a"]; }); - /** - * Plain text - */ +/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_73__["a"]; }); - if (value === '@') { - if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { - push({ type: 'at', extglob: true, value, output: '' }); - continue; - } +/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sample.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_74__["a"]; }); - push({ type: 'text', value }); - continue; - } +/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_75__["a"]; }); - /** - * Plain text - */ +/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/scan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_76__["a"]; }); - if (value !== '*') { - if (value === '$' || value === '^') { - value = `\\${value}`; - } +/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_77__["a"]; }); - const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); - if (match) { - value += match[0]; - state.index += match[0].length; - } +/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/share.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_78__["a"]; }); - push({ type: 'text', value }); - continue; - } +/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_79__["a"]; }); - /** - * Stars - */ +/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/single.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_80__["a"]; }); - if (prev && (prev.type === 'globstar' || prev.star === true)) { - prev.type = 'star'; - prev.star = true; - prev.value += value; - prev.output = star; - state.backtrack = true; - state.globstar = true; - consume(value); - continue; - } +/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_81__["a"]; }); - let rest = remaining(); - if (opts.noextglob !== true && /^\([^?]/.test(rest)) { - extglobOpen('star', value); - continue; - } +/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_82__["a"]; }); - if (prev.type === 'star') { - if (opts.noglobstar === true) { - consume(value); - continue; - } +/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_83__["a"]; }); - const prior = prev.prev; - const before = prior.prev; - const isStart = prior.type === 'slash' || prior.type === 'bos'; - const afterStar = before && (before.type === 'star' || before.type === 'globstar'); +/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_84__["a"]; }); - if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) { - push({ type: 'star', value, output: '' }); - continue; - } +/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/startWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_85__["a"]; }); - const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); - const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); - if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { - push({ type: 'star', value, output: '' }); - continue; - } +/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_86__["a"]; }); - // strip consecutive `/**/` - while (rest.slice(0, 3) === '/**') { - const after = input[state.index + 4]; - if (after && after !== '/') { - break; - } - rest = rest.slice(3); - consume('/**', 3); - } +/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_87__["a"]; }); - if (prior.type === 'bos' && eos()) { - prev.type = 'globstar'; - prev.value += value; - prev.output = globstar(opts); - state.output = prev.output; - state.globstar = true; - consume(value); - continue; - } +/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_88__["a"]; }); - if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { - state.output = state.output.slice(0, -(prior.output + prev.output).length); - prior.output = `(?:${prior.output}`; +/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_89__["a"]; }); - prev.type = 'globstar'; - prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)'); - prev.value += value; - state.globstar = true; - state.output += prior.output + prev.output; - consume(value); - continue; - } +/* harmony import */ var _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchScan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchScan", function() { return _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_90__["a"]; }); - if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') { - const end = rest[1] !== void 0 ? '|$' : ''; +/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_91__["a"]; }); - state.output = state.output.slice(0, -(prior.output + prev.output).length); - prior.output = `(?:${prior.output}`; +/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_92__["a"]; }); - prev.type = 'globstar'; - prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; - prev.value += value; +/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_93__["a"]; }); - state.output += prior.output + prev.output; - state.globstar = true; +/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_94__["a"]; }); - consume(value + advance()); +/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/tap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_95__["a"]; }); - push({ type: 'slash', value: '/', output: '' }); - continue; - } +/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_96__["b"]; }); - if (prior.type === 'bos' && rest[0] === '/') { - prev.type = 'globstar'; - prev.value += value; - prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; - state.output = prev.output; - state.globstar = true; - consume(value + advance()); - push({ type: 'slash', value: '/', output: '' }); - continue; - } +/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_97__["a"]; }); - // remove single star from output - state.output = state.output.slice(0, -prev.output.length); +/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_98__["a"]; }); - // reset previous token to globstar - prev.type = 'globstar'; - prev.output = globstar(opts); - prev.value += value; +/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_99__["a"]; }); - // reset output with globstar - state.output += prev.output; - state.globstar = true; - consume(value); - continue; - } +/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_100__["b"]; }); - const token = { type: 'star', value, output: star }; +/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_101__["a"]; }); - if (opts.bash === true) { - token.output = '.*?'; - if (prev.type === 'bos' || prev.type === 'slash') { - token.output = nodot + token.output; - } - push(token); - continue; - } +/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timestamp.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_102__["a"]; }); - if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { - token.output = value; - push(token); - continue; - } +/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/toArray.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_103__["a"]; }); - if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { - if (prev.type === 'dot') { - state.output += NO_DOT_SLASH; - prev.output += NO_DOT_SLASH; +/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/window.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_104__["a"]; }); - } else if (opts.dot === true) { - state.output += NO_DOTS_SLASH; - prev.output += NO_DOTS_SLASH; +/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_105__["a"]; }); - } else { - state.output += nodot; - prev.output += nodot; - } +/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_106__["a"]; }); - if (peek() !== '*') { - state.output += ONE_CHAR; - prev.output += ONE_CHAR; - } - } +/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_107__["a"]; }); - push(token); - } +/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_108__["a"]; }); - while (state.brackets > 0) { - if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); - state.output = utils.escapeLast(state.output, '['); - decrement('brackets'); - } +/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_109__["a"]; }); - while (state.parens > 0) { - if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); - state.output = utils.escapeLast(state.output, '('); - decrement('parens'); - } +/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_110__["a"]; }); - while (state.braces > 0) { - if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); - state.output = utils.escapeLast(state.output, '{'); - decrement('braces'); - } +/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zipAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_111__["a"]; }); - if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { - push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); - } +/* harmony import */ var _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zipWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_112__["a"]; }); - // rebuild the output if we had to backtrack at any point - if (state.backtrack === true) { - state.output = ''; - for (const token of state.tokens) { - state.output += token.output != null ? token.output : token.value; - if (token.suffix) { - state.output += token.suffix; - } - } - } - return state; -}; -/** - * Fast paths for creating regular expressions for common glob patterns. - * This can significantly speed up processing and has very little downside - * impact when none of the fast paths match. - */ -parse.fastpaths = (input, options) => { - const opts = { ...options }; - const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; - const len = input.length; - if (len > max) { - throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); - } - input = REPLACEMENTS[input] || input; - const win32 = utils.isWindows(options); - // create constants based on platform, for windows or posix - const { - DOT_LITERAL, - SLASH_LITERAL, - ONE_CHAR, - DOTS_SLASH, - NO_DOT, - NO_DOTS, - NO_DOTS_SLASH, - STAR, - START_ANCHOR - } = constants.globChars(win32); - const nodot = opts.dot ? NO_DOTS : NO_DOT; - const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; - const capture = opts.capture ? '' : '?:'; - const state = { negated: false, prefix: '' }; - let star = opts.bash === true ? '.*?' : STAR; - if (opts.capture) { - star = `(${star})`; - } - const globstar = opts => { - if (opts.noglobstar === true) return star; - return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; - }; - const create = str => { - switch (str) { - case '*': - return `${nodot}${ONE_CHAR}${star}`; - case '.*': - return `${DOT_LITERAL}${ONE_CHAR}${star}`; - case '*.*': - return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; - case '*/*': - return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; - case '**': - return nodot + globstar(opts); - case '**/*': - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; - case '**/*.*': - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; - case '**/.*': - return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; - default: { - const match = /^(.*?)\.(\w+)$/.exec(str); - if (!match) return; - const source = create(match[1]); - if (!source) return; - return source + DOT_LITERAL + match[2]; - } - } - }; - const output = utils.removePrefix(input, state); - let source = create(output); - if (source && opts.strictSlashes !== true) { - source += `${SLASH_LITERAL}?`; - } - return source; -}; -module.exports = parse; -/***/ }), -/***/ "../../node_modules/picomatch/lib/picomatch.js": -/***/ (function(module, exports, __webpack_require__) { -"use strict"; -const path = __webpack_require__("path"); -const scan = __webpack_require__("../../node_modules/picomatch/lib/scan.js"); -const parse = __webpack_require__("../../node_modules/picomatch/lib/parse.js"); -const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); -const constants = __webpack_require__("../../node_modules/picomatch/lib/constants.js"); -const isObject = val => val && typeof val === 'object' && !Array.isArray(val); -/** - * Creates a matcher function from one or more glob patterns. The - * returned function takes a string to match as its first argument, - * and returns true if the string is a match. The returned matcher - * function also takes a boolean as the second argument that, when true, - * returns an object with additional information. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch(glob[, options]); - * - * const isMatch = picomatch('*.!(*a)'); - * console.log(isMatch('a.a')); //=> false - * console.log(isMatch('a.b')); //=> true - * ``` - * @name picomatch - * @param {String|Array} `globs` One or more glob patterns. - * @param {Object=} `options` - * @return {Function=} Returns a matcher function. - * @api public - */ -const picomatch = (glob, options, returnState = false) => { - if (Array.isArray(glob)) { - const fns = glob.map(input => picomatch(input, options, returnState)); - const arrayMatcher = str => { - for (const isMatch of fns) { - const state = isMatch(str); - if (state) return state; - } - return false; - }; - return arrayMatcher; - } - const isState = isObject(glob) && glob.tokens && glob.input; - if (glob === '' || (typeof glob !== 'string' && !isState)) { - throw new TypeError('Expected pattern to be a non-empty string'); - } - const opts = options || {}; - const posix = utils.isWindows(options); - const regex = isState - ? picomatch.compileRe(glob, options) - : picomatch.makeRe(glob, options, false, true); - const state = regex.state; - delete regex.state; - let isIgnored = () => false; - if (opts.ignore) { - const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; - isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); - } - const matcher = (input, returnObject = false) => { - const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); - const result = { glob, state, regex, posix, input, output, match, isMatch }; - if (typeof opts.onResult === 'function') { - opts.onResult(result); - } - if (isMatch === false) { - result.isMatch = false; - return returnObject ? result : false; - } - if (isIgnored(input)) { - if (typeof opts.onIgnore === 'function') { - opts.onIgnore(result); - } - result.isMatch = false; - return returnObject ? result : false; - } - if (typeof opts.onMatch === 'function') { - opts.onMatch(result); - } - return returnObject ? result : true; - }; - if (returnState) { - matcher.state = state; - } - return matcher; -}; -/** - * Test `input` with the given `regex`. This is used by the main - * `picomatch()` function to test the input string. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.test(input, regex[, options]); - * - * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); - * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } - * ``` - * @param {String} `input` String to test. - * @param {RegExp} `regex` - * @return {Object} Returns an object with matching info. - * @api public - */ -picomatch.test = (input, regex, options, { glob, posix } = {}) => { - if (typeof input !== 'string') { - throw new TypeError('Expected input to be a string'); - } - if (input === '') { - return { isMatch: false, output: '' }; - } - const opts = options || {}; - const format = opts.format || (posix ? utils.toPosixSlashes : null); - let match = input === glob; - let output = (match && format) ? format(input) : input; - if (match === false) { - output = format ? format(input) : input; - match = output === glob; - } - if (match === false || opts.capture === true) { - if (opts.matchBase === true || opts.basename === true) { - match = picomatch.matchBase(input, regex, options, posix); - } else { - match = regex.exec(output); - } - } - return { isMatch: Boolean(match), match, output }; -}; -/** - * Match the basename of a filepath. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.matchBase(input, glob[, options]); - * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true - * ``` - * @param {String} `input` String to test. - * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). - * @return {Boolean} - * @api public - */ -picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { - const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); - return regex.test(path.basename(input)); -}; -/** - * Returns true if **any** of the given glob `patterns` match the specified `string`. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.isMatch(string, patterns[, options]); - * - * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true - * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false - * ``` - * @param {String|Array} str The string to test. - * @param {String|Array} patterns One or more glob patterns to use for matching. - * @param {Object} [options] See available [options](#options). - * @return {Boolean} Returns true if any patterns match `str` - * @api public - */ -picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); -/** - * Parse a glob pattern to create the source string for a regular - * expression. - * - * ```js - * const picomatch = require('picomatch'); - * const result = picomatch.parse(pattern[, options]); - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {Object} Returns an object with useful properties and output to be used as a regex source string. - * @api public - */ -picomatch.parse = (pattern, options) => { - if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); - return parse(pattern, { ...options, fastpaths: false }); -}; -/** - * Scan a glob pattern to separate the pattern into segments. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.scan(input[, options]); - * - * const result = picomatch.scan('!./foo/*.js'); - * console.log(result); - * { prefix: '!./', - * input: '!./foo/*.js', - * start: 3, - * base: 'foo', - * glob: '*.js', - * isBrace: false, - * isBracket: false, - * isGlob: true, - * isExtglob: false, - * isGlobstar: false, - * negated: true } - * ``` - * @param {String} `input` Glob pattern to scan. - * @param {Object} `options` - * @return {Object} Returns an object with - * @api public - */ -picomatch.scan = (input, options) => scan(input, options); -/** - * Compile a regular expression from the `state` object returned by the - * [parse()](#parse) method. - * - * @param {Object} `state` - * @param {Object} `options` - * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser. - * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging. - * @return {RegExp} - * @api public - */ -picomatch.compileRe = (state, options, returnOutput = false, returnState = false) => { - if (returnOutput === true) { - return state.output; - } - const opts = options || {}; - const prepend = opts.contains ? '' : '^'; - const append = opts.contains ? '' : '$'; - let source = `${prepend}(?:${state.output})${append}`; - if (state && state.negated === true) { - source = `^(?!${source}).*$`; - } - const regex = picomatch.toRegex(source, options); - if (returnState === true) { - regex.state = state; - } - return regex; -}; -/** - * Create a regular expression from a parsed glob pattern. - * - * ```js - * const picomatch = require('picomatch'); - * const state = picomatch.parse('*.js'); - * // picomatch.compileRe(state[, options]); - * - * console.log(picomatch.compileRe(state)); - * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ - * ``` - * @param {String} `state` The object returned from the `.parse` method. - * @param {Object} `options` - * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result. - * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression. - * @return {RegExp} Returns a regex created from the given pattern. - * @api public - */ -picomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => { - if (!input || typeof input !== 'string') { - throw new TypeError('Expected a non-empty string'); - } - let parsed = { negated: false, fastpaths: true }; - if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { - parsed.output = parse.fastpaths(input, options); - } - if (!parsed.output) { - parsed = parse(input, options); - } - return picomatch.compileRe(parsed, options, returnOutput, returnState); -}; -/** - * Create a regular expression from the given regex source string. - * - * ```js - * const picomatch = require('picomatch'); - * // picomatch.toRegex(source[, options]); - * - * const { output } = picomatch.parse('*.js'); - * console.log(picomatch.toRegex(output)); - * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ - * ``` - * @param {String} `source` Regular expression source string. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ -picomatch.toRegex = (source, options) => { - try { - const opts = options || {}; - return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); - } catch (err) { - if (options && options.debug === true) throw err; - return /$^/; - } -}; -/** - * Picomatch constants. - * @return {Object} - */ -picomatch.constants = constants; -/** - * Expose "picomatch" - */ -module.exports = picomatch; -/***/ }), -/***/ "../../node_modules/picomatch/lib/scan.js": -/***/ (function(module, exports, __webpack_require__) { -"use strict"; -const utils = __webpack_require__("../../node_modules/picomatch/lib/utils.js"); -const { - CHAR_ASTERISK, /* * */ - CHAR_AT, /* @ */ - CHAR_BACKWARD_SLASH, /* \ */ - CHAR_COMMA, /* , */ - CHAR_DOT, /* . */ - CHAR_EXCLAMATION_MARK, /* ! */ - CHAR_FORWARD_SLASH, /* / */ - CHAR_LEFT_CURLY_BRACE, /* { */ - CHAR_LEFT_PARENTHESES, /* ( */ - CHAR_LEFT_SQUARE_BRACKET, /* [ */ - CHAR_PLUS, /* + */ - CHAR_QUESTION_MARK, /* ? */ - CHAR_RIGHT_CURLY_BRACE, /* } */ - CHAR_RIGHT_PARENTHESES, /* ) */ - CHAR_RIGHT_SQUARE_BRACKET /* ] */ -} = __webpack_require__("../../node_modules/picomatch/lib/constants.js"); -const isPathSeparator = code => { - return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; -}; -const depth = token => { - if (token.isPrefix !== true) { - token.depth = token.isGlobstar ? Infinity : 1; - } -}; -/** - * Quickly scans a glob pattern and returns an object with a handful of - * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), - * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not - * with `!(`) and `negatedExtglob` (true if the path starts with `!(`). - * - * ```js - * const pm = require('picomatch'); - * console.log(pm.scan('foo/bar/*.js')); - * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } - * ``` - * @param {String} `str` - * @param {Object} `options` - * @return {Object} Returns an object with tokens and regex source string. - * @api public - */ -const scan = (input, options) => { - const opts = options || {}; - const length = input.length - 1; - const scanToEnd = opts.parts === true || opts.scanToEnd === true; - const slashes = []; - const tokens = []; - const parts = []; - let str = input; - let index = -1; - let start = 0; - let lastIndex = 0; - let isBrace = false; - let isBracket = false; - let isGlob = false; - let isExtglob = false; - let isGlobstar = false; - let braceEscaped = false; - let backslashes = false; - let negated = false; - let negatedExtglob = false; - let finished = false; - let braces = 0; - let prev; - let code; - let token = { value: '', depth: 0, isGlob: false }; - const eos = () => index >= length; - const peek = () => str.charCodeAt(index + 1); - const advance = () => { - prev = code; - return str.charCodeAt(++index); - }; - while (index < length) { - code = advance(); - let next; - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - code = advance(); - if (code === CHAR_LEFT_CURLY_BRACE) { - braceEscaped = true; - } - continue; - } - if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { - braces++; - while (eos() !== true && (code = advance())) { - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - advance(); - continue; - } - if (code === CHAR_LEFT_CURLY_BRACE) { - braces++; - continue; - } - if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { - isBrace = token.isBrace = true; - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (braceEscaped !== true && code === CHAR_COMMA) { - isBrace = token.isBrace = true; - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_RIGHT_CURLY_BRACE) { - braces--; - if (braces === 0) { - braceEscaped = false; - isBrace = token.isBrace = true; - finished = true; - break; - } - } - } - if (scanToEnd === true) { - continue; - } - break; - } - if (code === CHAR_FORWARD_SLASH) { - slashes.push(index); - tokens.push(token); - token = { value: '', depth: 0, isGlob: false }; - if (finished === true) continue; - if (prev === CHAR_DOT && index === (start + 1)) { - start += 2; - continue; - } - lastIndex = index + 1; - continue; - } - if (opts.noext !== true) { - const isExtglobChar = code === CHAR_PLUS - || code === CHAR_AT - || code === CHAR_ASTERISK - || code === CHAR_QUESTION_MARK - || code === CHAR_EXCLAMATION_MARK; - if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { - isGlob = token.isGlob = true; - isExtglob = token.isExtglob = true; - finished = true; - if (code === CHAR_EXCLAMATION_MARK && index === start) { - negatedExtglob = true; - } - if (scanToEnd === true) { - while (eos() !== true && (code = advance())) { - if (code === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - code = advance(); - continue; - } +//# sourceMappingURL=index.js.map - if (code === CHAR_RIGHT_PARENTHESES) { - isGlob = token.isGlob = true; - finished = true; - break; - } - } - continue; - } - break; - } - } +/***/ }), - if (code === CHAR_ASTERISK) { - if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; - isGlob = token.isGlob = true; - finished = true; +/***/ "../../node_modules/rxjs/node_modules/tslib/tslib.es6.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { - if (scanToEnd === true) { - continue; - } - break; - } +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return __extends; }); +/* unused harmony export __assign */ +/* unused harmony export __rest */ +/* unused harmony export __decorate */ +/* unused harmony export __param */ +/* unused harmony export __metadata */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return __awaiter; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return __generator; }); +/* unused harmony export __createBinding */ +/* unused harmony export __exportStar */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return __values; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return __read; }); +/* unused harmony export __spread */ +/* unused harmony export __spreadArrays */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return __spreadArray; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __await; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __asyncGenerator; }); +/* unused harmony export __asyncDelegator */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __asyncValues; }); +/* unused harmony export __makeTemplateObject */ +/* unused harmony export __importStar */ +/* unused harmony export __importDefault */ +/* unused harmony export __classPrivateFieldGet */ +/* unused harmony export __classPrivateFieldSet */ +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +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. +***************************************************************************** */ +/* 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + 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 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + 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) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + 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) : adopt(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 }; + } +} + +var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +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; +} + +/** @deprecated */ +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +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; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} - if (code === CHAR_QUESTION_MARK) { - isGlob = token.isGlob = true; - finished = true; - if (scanToEnd === true) { - continue; - } - break; - } +/***/ }), - if (code === CHAR_LEFT_SQUARE_BRACKET) { - while (eos() !== true && (next = advance())) { - if (next === CHAR_BACKWARD_SLASH) { - backslashes = token.backslashes = true; - advance(); - continue; - } +/***/ "../../node_modules/shebang-command/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (next === CHAR_RIGHT_SQUARE_BRACKET) { - isBracket = token.isBracket = true; - isGlob = token.isGlob = true; - finished = true; - break; - } - } +"use strict"; - if (scanToEnd === true) { - continue; - } +const shebangRegex = __webpack_require__("../../node_modules/shebang-regex/index.js"); - break; - } +module.exports = (string = '') => { + const match = string.match(shebangRegex); - if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { - negated = token.negated = true; - start++; - continue; - } + if (!match) { + return null; + } - if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { - isGlob = token.isGlob = true; + const [path, argument] = match[0].replace(/#! ?/, '').split(' '); + const binary = path.split('/').pop(); - if (scanToEnd === true) { - while (eos() !== true && (code = advance())) { - if (code === CHAR_LEFT_PARENTHESES) { - backslashes = token.backslashes = true; - code = advance(); - continue; - } + if (binary === 'env') { + return argument; + } - if (code === CHAR_RIGHT_PARENTHESES) { - finished = true; - break; - } - } - continue; - } - break; - } + return argument ? `${binary} ${argument}` : binary; +}; - if (isGlob === true) { - finished = true; - if (scanToEnd === true) { - continue; - } +/***/ }), - break; - } - } +/***/ "../../node_modules/shebang-regex/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (opts.noext === true) { - isExtglob = false; - isGlob = false; - } +"use strict"; - let base = str; - let prefix = ''; - let glob = ''; +module.exports = /^#!(.*)/; - if (start > 0) { - prefix = str.slice(0, start); - str = str.slice(start); - lastIndex -= start; - } - if (base && isGlob === true && lastIndex > 0) { - base = str.slice(0, lastIndex); - glob = str.slice(lastIndex); - } else if (isGlob === true) { - base = ''; - glob = str; - } else { - base = str; +/***/ }), + +/***/ "../../node_modules/signal-exit/index.js": +/***/ (function(module, exports, __webpack_require__) { + +// Note: since nyc uses this module to output coverage, any lines +// that are in the direct sync flow of nyc's outputCoverage are +// ignored, since we can never get coverage for them. +// grab a reference to node's real process object right away +var process = global.process + +const processOk = function (process) { + return process && + typeof process === 'object' && + typeof process.removeListener === 'function' && + typeof process.emit === 'function' && + typeof process.reallyExit === 'function' && + typeof process.listeners === 'function' && + typeof process.kill === 'function' && + typeof process.pid === 'number' && + typeof process.on === 'function' +} + +// some kind of non-node environment, just no-op +/* istanbul ignore if */ +if (!processOk(process)) { + module.exports = function () { + return function () {} } +} else { + var assert = __webpack_require__("assert") + var signals = __webpack_require__("../../node_modules/signal-exit/signals.js") + var isWin = /^win/i.test(process.platform) - if (base && base !== '' && base !== '/' && base !== str) { - if (isPathSeparator(base.charCodeAt(base.length - 1))) { - base = base.slice(0, -1); - } + var EE = __webpack_require__("events") + /* istanbul ignore if */ + if (typeof EE !== 'function') { + EE = EE.EventEmitter } - if (opts.unescape === true) { - if (glob) glob = utils.removeBackslashes(glob); + var emitter + if (process.__signal_exit_emitter__) { + emitter = process.__signal_exit_emitter__ + } else { + emitter = process.__signal_exit_emitter__ = new EE() + emitter.count = 0 + emitter.emitted = {} + } - if (base && backslashes === true) { - base = utils.removeBackslashes(base); - } + // Because this emitter is a global, we have to check to see if a + // previous version of this library failed to enable infinite listeners. + // I know what you're about to say. But literally everything about + // signal-exit is a compromise with evil. Get used to it. + if (!emitter.infinite) { + emitter.setMaxListeners(Infinity) + emitter.infinite = true } - const state = { - prefix, - input, - start, - base, - glob, - isBrace, - isBracket, - isGlob, - isExtglob, - isGlobstar, - negated, - negatedExtglob - }; + module.exports = function (cb, opts) { + /* istanbul ignore if */ + if (!processOk(global.process)) { + return function () {} + } + assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler') - if (opts.tokens === true) { - state.maxDepth = 0; - if (!isPathSeparator(code)) { - tokens.push(token); + if (loaded === false) { + load() } - state.tokens = tokens; - } - if (opts.parts === true || opts.tokens === true) { - let prevIndex; + var ev = 'exit' + if (opts && opts.alwaysLast) { + ev = 'afterexit' + } - for (let idx = 0; idx < slashes.length; idx++) { - const n = prevIndex ? prevIndex + 1 : start; - const i = slashes[idx]; - const value = input.slice(n, i); - if (opts.tokens) { - if (idx === 0 && start !== 0) { - tokens[idx].isPrefix = true; - tokens[idx].value = prefix; - } else { - tokens[idx].value = value; - } - depth(tokens[idx]); - state.maxDepth += tokens[idx].depth; - } - if (idx !== 0 || value !== '') { - parts.push(value); + var remove = function () { + emitter.removeListener(ev, cb) + if (emitter.listeners('exit').length === 0 && + emitter.listeners('afterexit').length === 0) { + unload() } - prevIndex = i; } + emitter.on(ev, cb) - if (prevIndex && prevIndex + 1 < input.length) { - const value = input.slice(prevIndex + 1); - parts.push(value); + return remove + } - if (opts.tokens) { - tokens[tokens.length - 1].value = value; - depth(tokens[tokens.length - 1]); - state.maxDepth += tokens[tokens.length - 1].depth; - } + var unload = function unload () { + if (!loaded || !processOk(global.process)) { + return } + loaded = false - state.slashes = slashes; - state.parts = parts; + signals.forEach(function (sig) { + try { + process.removeListener(sig, sigListeners[sig]) + } catch (er) {} + }) + process.emit = originalProcessEmit + process.reallyExit = originalProcessReallyExit + emitter.count -= 1 } + module.exports.unload = unload - return state; -}; - -module.exports = scan; - - -/***/ }), - -/***/ "../../node_modules/picomatch/lib/utils.js": -/***/ (function(module, exports, __webpack_require__) { + var emit = function emit (event, code, signal) { + /* istanbul ignore if */ + if (emitter.emitted[event]) { + return + } + emitter.emitted[event] = true + emitter.emit(event, code, signal) + } -"use strict"; + // { : , ... } + var sigListeners = {} + signals.forEach(function (sig) { + sigListeners[sig] = function listener () { + /* istanbul ignore if */ + if (!processOk(global.process)) { + return + } + // If there are no other listeners, an exit is coming! + // Simplest way: remove us and then re-send the signal. + // We know that this will kill the process, so we can + // safely emit now. + var listeners = process.listeners(sig) + if (listeners.length === emitter.count) { + unload() + emit('exit', null, sig) + /* istanbul ignore next */ + emit('afterexit', null, sig) + /* istanbul ignore next */ + if (isWin && sig === 'SIGHUP') { + // "SIGHUP" throws an `ENOSYS` error on Windows, + // so use a supported signal instead + sig = 'SIGINT' + } + /* istanbul ignore next */ + process.kill(process.pid, sig) + } + } + }) + module.exports.signals = function () { + return signals + } -const path = __webpack_require__("path"); -const win32 = process.platform === 'win32'; -const { - REGEX_BACKSLASH, - REGEX_REMOVE_BACKSLASH, - REGEX_SPECIAL_CHARS, - REGEX_SPECIAL_CHARS_GLOBAL -} = __webpack_require__("../../node_modules/picomatch/lib/constants.js"); + var loaded = false -exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); -exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); -exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); -exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); -exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); + var load = function load () { + if (loaded || !processOk(global.process)) { + return + } + loaded = true -exports.removeBackslashes = str => { - return str.replace(REGEX_REMOVE_BACKSLASH, match => { - return match === '\\' ? '' : match; - }); -}; + // This is the number of onSignalExit's that are in play. + // It's important so that we can count the correct number of + // listeners on signals, and don't wait for the other one to + // handle it instead of us. + emitter.count += 1 -exports.supportsLookbehinds = () => { - const segs = process.version.slice(1).split('.').map(Number); - if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { - return true; - } - return false; -}; + signals = signals.filter(function (sig) { + try { + process.on(sig, sigListeners[sig]) + return true + } catch (er) { + return false + } + }) -exports.isWindows = options => { - if (options && typeof options.windows === 'boolean') { - return options.windows; + process.emit = processEmit + process.reallyExit = processReallyExit } - return win32 === true || path.sep === '\\'; -}; - -exports.escapeLast = (input, char, lastIdx) => { - const idx = input.lastIndexOf(char, lastIdx); - if (idx === -1) return input; - if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); - return `${input.slice(0, idx)}\\${input.slice(idx)}`; -}; + module.exports.load = load -exports.removePrefix = (input, state = {}) => { - let output = input; - if (output.startsWith('./')) { - output = output.slice(2); - state.prefix = './'; + var originalProcessReallyExit = process.reallyExit + var processReallyExit = function processReallyExit (code) { + /* istanbul ignore if */ + if (!processOk(global.process)) { + return + } + process.exitCode = code || /* istanbul ignore next */ 0 + emit('exit', process.exitCode, null) + /* istanbul ignore next */ + emit('afterexit', process.exitCode, null) + /* istanbul ignore next */ + originalProcessReallyExit.call(process, process.exitCode) } - return output; -}; -exports.wrapOutput = (input, state = {}, options = {}) => { - const prepend = options.contains ? '' : '^'; - const append = options.contains ? '' : '$'; - - let output = `${prepend}(?:${input})${append}`; - if (state.negated === true) { - output = `(?:^(?!${output}).*$)`; + var originalProcessEmit = process.emit + var processEmit = function processEmit (ev, arg) { + if (ev === 'exit' && processOk(global.process)) { + /* istanbul ignore else */ + if (arg !== undefined) { + process.exitCode = arg + } + var ret = originalProcessEmit.apply(this, arguments) + /* istanbul ignore next */ + emit('exit', process.exitCode, null) + /* istanbul ignore next */ + emit('afterexit', process.exitCode, null) + /* istanbul ignore next */ + return ret + } else { + return originalProcessEmit.apply(this, arguments) + } } - return output; -}; +} /***/ }), -/***/ "../../node_modules/pify/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; +/***/ "../../node_modules/signal-exit/signals.js": +/***/ (function(module, exports) { +// This is not the set of all possible signals. +// +// It IS, however, the set of all signals that trigger +// an exit on either Linux or BSD systems. Linux is a +// superset of the signal names supported on BSD, and +// the unknown signals just fail to register, so we can +// catch that easily enough. +// +// Don't bother with SIGKILL. It's uncatchable, which +// means that we can't fire any callbacks anyway. +// +// If a user does happen to register a handler on a non- +// fatal signal like SIGWINCH or something, and then +// exit, it'll end up firing `process.emit('exit')`, so +// the handler will be fired anyway. +// +// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised +// artificially, inherently leave the process in a +// state from which it is not safe to try and enter JS +// listeners. +module.exports = [ + 'SIGABRT', + 'SIGALRM', + 'SIGHUP', + 'SIGINT', + 'SIGTERM' +] -const processFn = (fn, options) => function (...args) { - const P = options.promiseModule; +if (process.platform !== 'win32') { + module.exports.push( + 'SIGVTALRM', + 'SIGXCPU', + 'SIGXFSZ', + 'SIGUSR2', + 'SIGTRAP', + 'SIGSYS', + 'SIGQUIT', + 'SIGIOT' + // should detect profiler and enable/disable accordingly. + // see #21 + // 'SIGPROF' + ) +} - return new P((resolve, reject) => { - if (options.multiArgs) { - args.push((...result) => { - if (options.errorFirst) { - if (result[0]) { - reject(result); - } else { - result.shift(); - resolve(result); - } - } else { - resolve(result); - } - }); - } else if (options.errorFirst) { - args.push((error, result) => { - if (error) { - reject(error); - } else { - resolve(result); - } - }); - } else { - args.push(resolve); - } +if (process.platform === 'linux') { + module.exports.push( + 'SIGIO', + 'SIGPOLL', + 'SIGPWR', + 'SIGSTKFLT', + 'SIGUNUSED' + ) +} - fn.apply(this, args); - }); -}; -module.exports = (input, options) => { - options = Object.assign({ - exclude: [/.+(Sync|Stream)$/], - errorFirst: true, - promiseModule: Promise - }, options); +/***/ }), - const objType = typeof input; - if (!(input !== null && (objType === 'object' || objType === 'function'))) { - throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${input === null ? 'null' : objType}\``); - } +/***/ "../../node_modules/slash/index.js": +/***/ (function(module, exports, __webpack_require__) { - const filter = key => { - const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key); - return options.include ? options.include.some(match) : !options.exclude.some(match); - }; +"use strict"; - let ret; - if (objType === 'function') { - ret = function (...args) { - return options.excludeMain ? input(...args) : processFn(input, options).apply(this, args); - }; - } else { - ret = Object.create(Object.getPrototypeOf(input)); - } +module.exports = path => { + const isExtendedLengthPath = /^\\\\\?\\/.test(path); + const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex - for (const key in input) { // eslint-disable-line guard-for-in - const property = input[key]; - ret[key] = typeof property === 'function' && filter(key) ? processFn(property, options) : property; + if (isExtendedLengthPath || hasNonAscii) { + return path; } - return ret; + return path.replace(/\\/g, '/'); }; /***/ }), -/***/ "../../node_modules/posix-character-classes/index.js": +/***/ "../../node_modules/sort-keys/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; +const isPlainObj = __webpack_require__("../../node_modules/sort-keys/node_modules/is-plain-obj/index.js"); -/** - * POSIX character classes - */ - -module.exports = { - alnum: 'a-zA-Z0-9', - alpha: 'a-zA-Z', - ascii: '\\x00-\\x7F', - blank: ' \\t', - cntrl: '\\x00-\\x1F\\x7F', - digit: '0-9', - graph: '\\x21-\\x7E', - lower: 'a-z', - print: '\\x20-\\x7E ', - punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', - space: ' \\t\\r\\n\\v\\f', - upper: 'A-Z', - word: 'A-Za-z0-9_', - xdigit: 'A-Fa-f0-9' -}; - - -/***/ }), +module.exports = (obj, opts) => { + if (!isPlainObj(obj)) { + throw new TypeError('Expected a plain object'); + } -/***/ "../../node_modules/pump/index.js": -/***/ (function(module, exports, __webpack_require__) { + opts = opts || {}; -var once = __webpack_require__("../../node_modules/once/once.js") -var eos = __webpack_require__("../../node_modules/end-of-stream/index.js") -var fs = __webpack_require__("fs") // we only need fs to get the ReadStream and WriteStream prototypes + // DEPRECATED + if (typeof opts === 'function') { + throw new TypeError('Specify the compare function as an option instead'); + } -var noop = function () {} -var ancient = /^v?\.0/.test(process.version) + const deep = opts.deep; + const seenInput = []; + const seenOutput = []; -var isFn = function (fn) { - return typeof fn === 'function' -} + const sortKeys = x => { + const seenIndex = seenInput.indexOf(x); -var isFS = function (stream) { - if (!ancient) return false // newer node version do not need to care about fs is a special way - if (!fs) return false // browser - return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close) -} + if (seenIndex !== -1) { + return seenOutput[seenIndex]; + } -var isRequest = function (stream) { - return stream.setHeader && isFn(stream.abort) -} + const ret = {}; + const keys = Object.keys(x).sort(opts.compare); -var destroyer = function (stream, reading, writing, callback) { - callback = once(callback) + seenInput.push(x); + seenOutput.push(ret); - var closed = false - stream.on('close', function () { - closed = true - }) + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + const val = x[key]; - eos(stream, {readable: reading, writable: writing}, function (err) { - if (err) return callback(err) - closed = true - callback() - }) + if (deep && Array.isArray(val)) { + const retArr = []; - var destroyed = false - return function (err) { - if (closed) return - if (destroyed) return - destroyed = true + for (let j = 0; j < val.length; j++) { + retArr[j] = isPlainObj(val[j]) ? sortKeys(val[j]) : val[j]; + } - if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks - if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want + ret[key] = retArr; + continue; + } - if (isFn(stream.destroy)) return stream.destroy() + ret[key] = deep && isPlainObj(val) ? sortKeys(val) : val; + } - callback(err || new Error('stream was destroyed')) - } -} + return ret; + }; -var call = function (fn) { - fn() -} + return sortKeys(obj); +}; -var pipe = function (from, to) { - return from.pipe(to) -} -var pump = function () { - var streams = Array.prototype.slice.call(arguments) - var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop +/***/ }), - if (Array.isArray(streams[0])) streams = streams[0] - if (streams.length < 2) throw new Error('pump requires two streams per minimum') +/***/ "../../node_modules/sort-keys/node_modules/is-plain-obj/index.js": +/***/ (function(module, exports, __webpack_require__) { - var error - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1 - var writing = i > 0 - return destroyer(stream, reading, writing, function (err) { - if (!error) error = err - if (err) destroys.forEach(call) - if (reading) return - destroys.forEach(call) - callback(error) - }) - }) +"use strict"; - return streams.reduce(pipe) -} +var toString = Object.prototype.toString; -module.exports = pump +module.exports = function (x) { + var prototype; + return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({})); +}; /***/ }), -/***/ "../../node_modules/read-pkg/index.js": -/***/ (function(module, exports, __webpack_require__) { +/***/ "../../node_modules/sort-object-keys/index.js": +/***/ (function(module, exports) { -"use strict"; +module.exports = function sortObjectByKeyNameList(object, sortWith) { + var keys; + var sortFn; -const {promisify} = __webpack_require__("util"); -const fs = __webpack_require__("fs"); -const path = __webpack_require__("path"); -const parseJson = __webpack_require__("../../node_modules/parse-json/index.js"); + if (typeof sortWith === 'function') { + sortFn = sortWith; + } else { + keys = sortWith; + } -const readFileAsync = promisify(fs.readFile); + var objectKeys = Object.keys(object); + return (keys || []).concat(objectKeys.sort(sortFn)).reduce(function(total, key) { + if (objectKeys.indexOf(key) !== -1) { + total[key] = object[key]; + } + return total; + }, Object.create(null)); +} -module.exports = async options => { - options = { - cwd: process.cwd(), - normalize: true, - ...options - }; - const filePath = path.resolve(options.cwd, 'package.json'); - const json = parseJson(await readFileAsync(filePath, 'utf8')); +/***/ }), - if (options.normalize) { - __webpack_require__("../../node_modules/normalize-package-data/lib/normalize.js")(json); - } +/***/ "../../node_modules/sort-package-json/index.js": +/***/ (function(module, exports, __webpack_require__) { - return json; -}; +const sortObjectKeys = __webpack_require__("../../node_modules/sort-object-keys/index.js") +const detectIndent = __webpack_require__("../../node_modules/detect-indent/index.js") +const detectNewline = __webpack_require__("../../node_modules/detect-newline/index.js").graceful +const gitHooks = __webpack_require__("../../node_modules/git-hooks-list/index.json") +const isPlainObject = __webpack_require__("../../node_modules/is-plain-obj/index.js") -module.exports.sync = options => { - options = { - cwd: process.cwd(), - normalize: true, - ...options - }; - - const filePath = path.resolve(options.cwd, 'package.json'); - const json = parseJson(fs.readFileSync(filePath, 'utf8')); - - if (options.normalize) { - __webpack_require__("../../node_modules/normalize-package-data/lib/normalize.js")(json); - } - - return json; -}; - - -/***/ }), - -/***/ "../../node_modules/regex-not/index.js": -/***/ (function(module, exports, __webpack_require__) { +const hasOwnProperty = (object, property) => + Object.prototype.hasOwnProperty.call(object, property) +const pipe = (fns) => (x, ...args) => + fns.reduce((result, fn) => fn(result, ...args), x) +const onArray = (fn) => (x) => (Array.isArray(x) ? fn(x) : x) +const onStringArray = (fn) => (x) => + Array.isArray(x) && x.every((item) => typeof item === 'string') ? fn(x) : x +const uniq = onStringArray((xs) => xs.filter((x, i) => i === xs.indexOf(x))) +const sortArray = onStringArray((array) => [...array].sort()) +const uniqAndSortArray = pipe([uniq, sortArray]) +const onObject = (fn) => (x, ...args) => (isPlainObject(x) ? fn(x, ...args) : x) +const sortObjectBy = (comparator, deep) => { + const over = onObject((object) => { + object = sortObjectKeys(object, comparator) + if (deep) { + for (const [key, value] of Object.entries(object)) { + object[key] = over(value) + } + } + return object + }) -"use strict"; + return over +} +const sortObject = sortObjectBy() +const sortURLObject = sortObjectBy(['type', 'url']) +const sortPeopleObject = sortObjectBy(['name', 'email', 'url']) +const sortDirectories = sortObjectBy([ + 'lib', + 'bin', + 'man', + 'doc', + 'example', + 'test', +]) +const overProperty = (property, over) => (object, ...args) => + hasOwnProperty(object, property) + ? Object.assign(object, { [property]: over(object[property], ...args) }) + : object +const sortGitHooks = sortObjectBy(gitHooks) +// https://github.com/eslint/eslint/blob/acc0e47572a9390292b4e313b4a4bf360d236358/conf/config-schema.js +const eslintBaseConfigProperties = [ + // `files` and `excludedFiles` are only on `overrides[]` + // for easier sort `overrides[]`, + // add them to here, so we don't need sort `overrides[]` twice + 'files', + 'excludedFiles', + // baseConfig + 'env', + 'parser', + 'parserOptions', + 'settings', + 'plugins', + 'extends', + 'rules', + 'overrides', + 'globals', + 'processor', + 'noInlineConfig', + 'reportUnusedDisableDirectives', +] +const sortEslintConfig = onObject( + pipe([ + sortObjectBy(eslintBaseConfigProperties), + overProperty('env', sortObject), + overProperty('globals', sortObject), + overProperty( + 'overrides', + onArray((overrides) => overrides.map(sortEslintConfig)), + ), + overProperty('parserOptions', sortObject), + overProperty( + 'rules', + sortObjectBy( + (rule1, rule2) => + rule1.split('/').length - rule2.split('/').length || + rule1.localeCompare(rule2), + ), + ), + overProperty('settings', sortObject), + ]), +) +const sortVSCodeBadgeObject = sortObjectBy(['description', 'url', 'href']) -var extend = __webpack_require__("../../node_modules/regex-not/node_modules/extend-shallow/index.js"); -var safe = __webpack_require__("../../node_modules/safe-regex/index.js"); +const sortPrettierConfig = onObject( + pipe([ + // sort keys alphabetically, but put `overrides` at bottom + (config) => + sortObjectKeys(config, [ + ...Object.keys(config) + .filter((key) => key !== 'overrides') + .sort(), + 'overrides', + ]), + // if `config.overrides` exists + overProperty( + 'overrides', + // and `config.overrides` is an array + onArray((overrides) => + overrides.map( + pipe([ + // sort `config.overrides[]` alphabetically + sortObject, + // sort `config.overrides[].options` alphabetically + overProperty('options', sortObject), + ]), + ), + ), + ), + ]), +) -/** - * The main export is a function that takes a `pattern` string and an `options` object. - * - * ```js - & var not = require('regex-not'); - & console.log(not('foo')); - & //=> /^(?:(?!^(?:foo)$).)*$/ - * ``` - * - * @param {String} `pattern` - * @param {Object} `options` - * @return {RegExp} Converts the given `pattern` to a regex using the specified `options`. - * @api public - */ +// See https://docs.npmjs.com/misc/scripts +const defaultNpmScripts = new Set([ + 'install', + 'pack', + 'prepare', + 'publish', + 'restart', + 'shrinkwrap', + 'start', + 'stop', + 'test', + 'uninstall', + 'version', +]) -function toRegex(pattern, options) { - return new RegExp(toRegex.create(pattern, options)); +const hasDevDependency = (dependency, packageJson) => { + return ( + 'devDependencies' in packageJson && + !!packageJson.devDependencies[dependency] + ) } -/** - * Create a regex-compatible string from the given `pattern` and `options`. - * - * ```js - & var not = require('regex-not'); - & console.log(not.create('foo')); - & //=> '^(?:(?!^(?:foo)$).)*$' - * ``` - * @param {String} `pattern` - * @param {Object} `options` - * @return {String} - * @api public - */ - -toRegex.create = function(pattern, options) { - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } - - var opts = extend({}, options); - if (opts.contains === true) { - opts.strictNegate = false; - } - - var open = opts.strictOpen !== false ? '^' : ''; - var close = opts.strictClose !== false ? '$' : ''; - var endChar = opts.endChar ? opts.endChar : '+'; - var str = pattern; +const sortScripts = onObject((scripts, packageJson) => { + const names = Object.keys(scripts) + const prefixable = new Set() - if (opts.strictNegate === false) { - str = '(?:(?!(?:' + pattern + ')).)' + endChar; - } else { - str = '(?:(?!^(?:' + pattern + ')$).)' + endChar; - } + const keys = names.map((name) => { + const omitted = name.replace(/^(?:pre|post)/, '') + if (defaultNpmScripts.has(omitted) || names.includes(omitted)) { + prefixable.add(omitted) + return omitted + } + return name + }) - var res = open + str + close; - if (opts.safe === true && safe(res) === false) { - throw new Error('potentially unsafe regular expression: ' + res); + if (!hasDevDependency('npm-run-all', packageJson)) { + keys.sort() } - return res; -}; - -/** - * Expose `toRegex` - */ - -module.exports = toRegex; - - -/***/ }), - -/***/ "../../node_modules/regex-not/node_modules/extend-shallow/index.js": -/***/ (function(module, exports, __webpack_require__) { + const order = keys.reduce( + (order, key) => + order.concat( + prefixable.has(key) ? [`pre${key}`, key, `post${key}`] : [key], + ), + [], + ) -"use strict"; + return sortObjectKeys(scripts, order) +}) +// fields marked `vscode` are for `Visual Studio Code extension manifest` only +// https://code.visualstudio.com/api/references/extension-manifest +// Supported fields: +// publisher, displayName, categories, galleryBanner, preview, contributes, +// activationEvents, badges, markdown, qna, extensionPack, +// extensionDependencies, icon -var isExtendable = __webpack_require__("../../node_modules/regex-not/node_modules/is-extendable/index.js"); -var assignSymbols = __webpack_require__("../../node_modules/assign-symbols/index.js"); +// field.key{string}: field name +// field.over{function}: sort field subKey +const fields = [ + { key: '$schema' }, + { key: 'name' }, + /* vscode */ { key: 'displayName' }, + { key: 'version' }, + { key: 'private' }, + { key: 'description' }, + /* vscode */ { key: 'categories', over: uniq }, + { key: 'keywords', over: uniq }, + { key: 'homepage' }, + { key: 'bugs', over: sortObjectBy(['url', 'email']) }, + { key: 'repository', over: sortURLObject }, + { key: 'funding', over: sortURLObject }, + { key: 'license', over: sortURLObject }, + /* vscode */ { key: 'qna' }, + { key: 'author', over: sortPeopleObject }, + { + key: 'maintainers', + over: onArray((maintainers) => maintainers.map(sortPeopleObject)), + }, + { + key: 'contributors', + over: onArray((contributors) => contributors.map(sortPeopleObject)), + }, + /* vscode */ { key: 'publisher' }, + { key: 'sideEffects' }, + { key: 'type' }, + { key: 'imports' }, + { key: 'exports' }, + { key: 'main' }, + { key: 'umd:main' }, + { key: 'jsdelivr' }, + { key: 'unpkg' }, + { key: 'module' }, + { key: 'source' }, + { key: 'jsnext:main' }, + { key: 'browser' }, + { key: 'types' }, + { key: 'typesVersions' }, + { key: 'typings' }, + { key: 'style' }, + { key: 'example' }, + { key: 'examplestyle' }, + { key: 'assets' }, + { key: 'bin', over: sortObject }, + { key: 'man' }, + { key: 'directories', over: sortDirectories }, + { key: 'files', over: uniq }, + { key: 'workspaces' }, + // node-pre-gyp https://www.npmjs.com/package/node-pre-gyp#1-add-new-entries-to-your-packagejson + { + key: 'binary', + over: sortObjectBy([ + 'module_name', + 'module_path', + 'remote_path', + 'package_name', + 'host', + ]), + }, + { key: 'scripts', over: sortScripts }, + { key: 'betterScripts', over: sortScripts }, + /* vscode */ { key: 'contributes', over: sortObject }, + /* vscode */ { key: 'activationEvents', over: uniq }, + { key: 'husky', over: overProperty('hooks', sortGitHooks) }, + { key: 'simple-git-hooks', over: sortGitHooks }, + { key: 'pre-commit' }, + { key: 'commitlint', over: sortObject }, + { key: 'lint-staged' }, + { key: 'config', over: sortObject }, + { key: 'nodemonConfig', over: sortObject }, + { key: 'browserify', over: sortObject }, + { key: 'babel', over: sortObject }, + { key: 'browserslist' }, + { key: 'xo', over: sortObject }, + { key: 'prettier', over: sortPrettierConfig }, + { key: 'eslintConfig', over: sortEslintConfig }, + { key: 'eslintIgnore' }, + { key: 'npmpkgjsonlint', over: sortObject }, + { key: 'npmPackageJsonLintConfig', over: sortObject }, + { key: 'npmpackagejsonlint', over: sortObject }, + { key: 'release', over: sortObject }, + { key: 'remarkConfig', over: sortObject }, + { key: 'stylelint' }, + { key: 'ava', over: sortObject }, + { key: 'jest', over: sortObject }, + { key: 'mocha', over: sortObject }, + { key: 'nyc', over: sortObject }, + { key: 'c8', over: sortObject }, + { key: 'tap', over: sortObject }, + { key: 'resolutions', over: sortObject }, + { key: 'dependencies', over: sortObject }, + { key: 'devDependencies', over: sortObject }, + { key: 'dependenciesMeta', over: sortObjectBy(undefined, true) }, + { key: 'peerDependencies', over: sortObject }, + // TODO: only sort depth = 2 + { key: 'peerDependenciesMeta', over: sortObjectBy(undefined, true) }, + { key: 'optionalDependencies', over: sortObject }, + { key: 'bundledDependencies', over: uniqAndSortArray }, + { key: 'bundleDependencies', over: uniqAndSortArray }, + /* vscode */ { key: 'extensionPack', over: uniqAndSortArray }, + /* vscode */ { key: 'extensionDependencies', over: uniqAndSortArray }, + { key: 'flat' }, + { key: 'engines', over: sortObject }, + { key: 'engineStrict', over: sortObject }, + { key: 'languageName' }, + { key: 'os' }, + { key: 'cpu' }, + { key: 'preferGlobal', over: sortObject }, + { key: 'publishConfig', over: sortObject }, + /* vscode */ { key: 'icon' }, + /* vscode */ { + key: 'badges', + over: onArray((badge) => badge.map(sortVSCodeBadgeObject)), + }, + /* vscode */ { key: 'galleryBanner', over: sortObject }, + /* vscode */ { key: 'preview' }, + /* vscode */ { key: 'markdown' }, +] -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); +const defaultSortOrder = fields.map(({ key }) => key) +const overFields = pipe( + fields.reduce((fns, { key, over }) => { + if (over) { + fns.push(overProperty(key, over)) } - } - return obj; -}; + return fns + }, []), +) + +function editStringJSON(json, over) { + if (typeof json === 'string') { + const { indent } = detectIndent(json) + const endCharacters = json.slice(-1) === '\n' ? '\n' : '' + const newline = detectNewline(json) + json = JSON.parse(json) -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; + let result = JSON.stringify(over(json), null, indent) + endCharacters + if (newline === '\r\n') { + result = result.replace(/\n/g, newline) } + return result } -} - -function isString(val) { - return (val && typeof val === 'string'); -} -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; + return over(json) } -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} +const isPrivateKey = (key) => key[0] === '_' +const partition = (array, predicate) => + array.reduce( + (result, value) => { + result[predicate(value) ? 0 : 1].push(value) + return result + }, + [[], []], + ) +function sortPackageJson(jsonIsh, options = {}) { + return editStringJSON( + jsonIsh, + onObject((json) => { + let sortOrder = options.sortOrder ? options.sortOrder : defaultSortOrder -/** - * Returns true if the given `key` is an own property of `obj`. - */ + if (Array.isArray(sortOrder)) { + const keys = Object.keys(json) + const [privateKeys, publicKeys] = partition(keys, isPrivateKey) + sortOrder = [ + ...sortOrder, + ...defaultSortOrder, + ...publicKeys.sort(), + ...privateKeys.sort(), + ] + } -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); + return overFields(sortObjectKeys(json, sortOrder), json) + }), + ) } -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} +module.exports = sortPackageJson +module.exports.sortPackageJson = sortPackageJson +module.exports.sortOrder = defaultSortOrder +module.exports.default = sortPackageJson /***/ }), -/***/ "../../node_modules/regex-not/node_modules/is-extendable/index.js": +/***/ "../../node_modules/spdx-expression-parse/index.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isPlainObject = __webpack_require__("../../node_modules/is-plain-object/index.js"); +var parser = __webpack_require__("../../node_modules/spdx-expression-parse/parser.js").parser -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; +module.exports = function (argument) { + return parser.parse(argument) +} /***/ }), -/***/ "../../node_modules/repeat-element/index.js": +/***/ "../../node_modules/spdx-expression-parse/parser.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; -/*! - * repeat-element - * - * Copyright (c) 2015 Jon Schlinkert. - * Licensed under the MIT license. - */ - - - -module.exports = function repeat(ele, num) { - var arr = new Array(num); +/* WEBPACK VAR INJECTION */(function(module) {/* parser generated by jison 0.4.17 */ +/* + Returns a Parser object of the following structure: - for (var i = 0; i < num; i++) { - arr[i] = ele; + Parser: { + yy: {} } - return arr; -}; - - -/***/ }), - -/***/ "../../node_modules/repeat-string/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * repeat-string - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -/** - * Results cache - */ - -var res = ''; -var cache; - -/** - * Expose `repeat` - */ + Parser.prototype: { + yy: {}, + trace: function(), + symbols_: {associative list: name ==> number}, + terminals_: {associative list: number ==> name}, + productions_: [...], + performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), + table: [...], + defaultActions: {...}, + parseError: function(str, hash), + parse: function(input), -module.exports = repeat; + lexer: { + EOF: 1, + parseError: function(str, hash), + setInput: function(input), + input: function(), + unput: function(str), + more: function(), + less: function(n), + pastInput: function(), + upcomingInput: function(), + showPosition: function(), + test_match: function(regex_match_array, rule_index), + next: function(), + lex: function(), + begin: function(condition), + popState: function(), + _currentRules: function(), + topState: function(), + pushState: function(condition), -/** - * Repeat the given `string` the specified `number` - * of times. - * - * **Example:** - * - * ```js - * var repeat = require('repeat-string'); - * repeat('A', 5); - * //=> AAAAA - * ``` - * - * @param {String} `string` The string to repeat - * @param {Number} `number` The number of times to repeat the string - * @return {String} Repeated string - * @api public - */ + options: { + ranges: boolean (optional: true ==> token location info will include a .range[] member) + flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) + backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) + }, -function repeat(str, num) { - if (typeof str !== 'string') { - throw new TypeError('expected a string'); + performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), + rules: [...], + conditions: {associative list: name ==> set}, + } } - // cover common, quick use cases - if (num === 1) return str; - if (num === 2) return str + str; - var max = str.length * num; - if (cache !== str || typeof cache === 'undefined') { - cache = str; - res = ''; - } else if (res.length >= max) { - return res.substr(0, max); + token location info (@$, _$, etc.): { + first_line: n, + last_line: n, + first_column: n, + last_column: n, + range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) } - while (max > res.length && num > 1) { - if (num & 1) { - res += str; - } - - num >>= 1; - str += str; - } - res += str; - res = res.substr(0, max); - return res; -} - - -/***/ }), - -/***/ "../../node_modules/resolve/index.js": -/***/ (function(module, exports, __webpack_require__) { - -var async = __webpack_require__("../../node_modules/resolve/lib/async.js"); -async.core = __webpack_require__("../../node_modules/resolve/lib/core.js"); -async.isCore = __webpack_require__("../../node_modules/resolve/lib/is-core.js"); -async.sync = __webpack_require__("../../node_modules/resolve/lib/sync.js"); - -module.exports = async; - - -/***/ }), - -/***/ "../../node_modules/resolve/lib/async.js": -/***/ (function(module, exports, __webpack_require__) { - -var fs = __webpack_require__("fs"); -var getHomedir = __webpack_require__("../../node_modules/resolve/lib/homedir.js"); -var path = __webpack_require__("path"); -var caller = __webpack_require__("../../node_modules/resolve/lib/caller.js"); -var nodeModulesPaths = __webpack_require__("../../node_modules/resolve/lib/node-modules-paths.js"); -var normalizeOptions = __webpack_require__("../../node_modules/resolve/lib/normalize-options.js"); -var isCore = __webpack_require__("../../node_modules/is-core-module/index.js"); - -var realpathFS = fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath; - -var homedir = getHomedir(); -var defaultPaths = function () { - return [ - path.join(homedir, '.node_modules'), - path.join(homedir, '.node_libraries') - ]; -}; - -var defaultIsFile = function isFile(file, cb) { - fs.stat(file, function (err, stat) { - if (!err) { - return cb(null, stat.isFile() || stat.isFIFO()); - } - if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); - return cb(err); - }); -}; + the parseError function receives a 'hash' object with these members for lexer and parser errors: { + text: (matched text) + token: (the produced terminal token, if any) + line: (yylineno) + } + while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { + loc: (yylloc) + expected: (string describing the set of expected tokens) + recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) + } +*/ +var spdxparse = (function(){ +var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,5],$V1=[1,6],$V2=[1,7],$V3=[1,4],$V4=[1,9],$V5=[1,10],$V6=[5,14,15,17],$V7=[5,12,14,15,17]; +var parser = {trace: function trace() { }, +yy: {}, +symbols_: {"error":2,"start":3,"expression":4,"EOS":5,"simpleExpression":6,"LICENSE":7,"PLUS":8,"LICENSEREF":9,"DOCUMENTREF":10,"COLON":11,"WITH":12,"EXCEPTION":13,"AND":14,"OR":15,"OPEN":16,"CLOSE":17,"$accept":0,"$end":1}, +terminals_: {2:"error",5:"EOS",7:"LICENSE",8:"PLUS",9:"LICENSEREF",10:"DOCUMENTREF",11:"COLON",12:"WITH",13:"EXCEPTION",14:"AND",15:"OR",16:"OPEN",17:"CLOSE"}, +productions_: [0,[3,2],[6,1],[6,2],[6,1],[6,3],[4,1],[4,3],[4,3],[4,3],[4,3]], +performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { +/* this == yyval */ -var defaultIsDir = function isDirectory(dir, cb) { - fs.stat(dir, function (err, stat) { - if (!err) { - return cb(null, stat.isDirectory()); +var $0 = $$.length - 1; +switch (yystate) { +case 1: +return this.$ = $$[$0-1] +break; +case 2: case 4: case 5: +this.$ = {license: yytext} +break; +case 3: +this.$ = {license: $$[$0-1], plus: true} +break; +case 6: +this.$ = $$[$0] +break; +case 7: +this.$ = {exception: $$[$0]} +this.$.license = $$[$0-2].license +if ($$[$0-2].hasOwnProperty('plus')) { + this.$.plus = $$[$0-2].plus +} +break; +case 8: +this.$ = {conjunction: 'and', left: $$[$0-2], right: $$[$0]} +break; +case 9: +this.$ = {conjunction: 'or', left: $$[$0-2], right: $$[$0]} +break; +case 10: +this.$ = $$[$0-1] +break; +} +}, +table: [{3:1,4:2,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{1:[3]},{5:[1,8],14:$V4,15:$V5},o($V6,[2,6],{12:[1,11]}),{4:12,6:3,7:$V0,9:$V1,10:$V2,16:$V3},o($V7,[2,2],{8:[1,13]}),o($V7,[2,4]),{11:[1,14]},{1:[2,1]},{4:15,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{4:16,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{13:[1,17]},{14:$V4,15:$V5,17:[1,18]},o($V7,[2,3]),{9:[1,19]},o($V6,[2,8]),o([5,15,17],[2,9],{14:$V4}),o($V6,[2,7]),o($V6,[2,10]),o($V7,[2,5])], +defaultActions: {8:[2,1]}, +parseError: function parseError(str, hash) { + if (hash.recoverable) { + this.trace(str); + } else { + function _parseError (msg, hash) { + this.message = msg; + this.hash = hash; } - if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false); - return cb(err); - }); -}; - -var defaultRealpath = function realpath(x, cb) { - realpathFS(x, function (realpathErr, realPath) { - if (realpathErr && realpathErr.code !== 'ENOENT') cb(realpathErr); - else cb(null, realpathErr ? x : realPath); - }); -}; + _parseError.prototype = Error; -var maybeRealpath = function maybeRealpath(realpath, x, opts, cb) { - if (opts && opts.preserveSymlinks === false) { - realpath(x, cb); - } else { - cb(null, x); + throw new _parseError(str, hash); } -}; - -var defaultReadPackage = function defaultReadPackage(readFile, pkgfile, cb) { - readFile(pkgfile, function (readFileErr, body) { - if (readFileErr) cb(readFileErr); - else { - try { - var pkg = JSON.parse(body); - cb(null, pkg); - } catch (jsonErr) { - cb(null); - } +}, +parse: function parse(input) { + var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; + var args = lstack.slice.call(arguments, 1); + var lexer = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k)) { + sharedState.yy[k] = this.yy[k]; } - }); -}; - -var getPackageCandidates = function getPackageCandidates(x, start, opts) { - var dirs = nodeModulesPaths(start, opts, x); - for (var i = 0; i < dirs.length; i++) { - dirs[i] = path.join(dirs[i], x); } - return dirs; -}; - -module.exports = function resolve(x, options, callback) { - var cb = callback; - var opts = options; - if (typeof options === 'function') { - cb = opts; - opts = {}; + lexer.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer; + sharedState.yy.parser = this; + if (typeof lexer.yylloc == 'undefined') { + lexer.yylloc = {}; } - if (typeof x !== 'string') { - var err = new TypeError('Path must be a string.'); - return process.nextTick(function () { - cb(err); - }); + var yyloc = lexer.yylloc; + lstack.push(yyloc); + var ranges = lexer.options && lexer.options.ranges; + if (typeof sharedState.yy.parseError === 'function') { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; } - - opts = normalizeOptions(x, opts); - - var isFile = opts.isFile || defaultIsFile; - var isDirectory = opts.isDirectory || defaultIsDir; - var readFile = opts.readFile || fs.readFile; - var realpath = opts.realpath || defaultRealpath; - var readPackage = opts.readPackage || defaultReadPackage; - if (opts.readFile && opts.readPackage) { - var conflictErr = new TypeError('`readFile` and `readPackage` are mutually exclusive.'); - return process.nextTick(function () { - cb(conflictErr); - }); + function popStack(n) { + stack.length = stack.length - 2 * n; + vstack.length = vstack.length - n; + lstack.length = lstack.length - n; } - var packageIterator = opts.packageIterator; - - var extensions = opts.extensions || ['.js']; - var includeCoreModules = opts.includeCoreModules !== false; - var basedir = opts.basedir || path.dirname(caller()); - var parent = opts.filename || basedir; - - opts.paths = opts.paths || defaultPaths(); - - // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory - var absoluteStart = path.resolve(basedir); - - maybeRealpath( - realpath, - absoluteStart, - opts, - function (err, realStart) { - if (err) cb(err); - else init(realStart); - } - ); - - var res; - function init(basedir) { - if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { - res = path.resolve(basedir, x); - if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; - if ((/\/$/).test(x) && res === basedir) { - loadAsDirectory(res, opts.package, onfile); - } else loadAsFile(res, opts.package, onfile); - } else if (includeCoreModules && isCore(x)) { - return cb(null, x); - } else loadNodeModules(x, basedir, function (err, n, pkg) { - if (err) cb(err); - else if (n) { - return maybeRealpath(realpath, n, opts, function (err, realN) { - if (err) { - cb(err); - } else { - cb(null, realN, pkg); - } - }); - } else { - var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); - moduleError.code = 'MODULE_NOT_FOUND'; - cb(moduleError); + _token_stack: + var lex = function () { + var token; + token = lexer.lex() || EOF; + if (typeof token !== 'number') { + token = self.symbols_[token] || token; } - }); - } - - function onfile(err, m, pkg) { - if (err) cb(err); - else if (m) cb(null, m, pkg); - else loadAsDirectory(res, function (err, d, pkg) { - if (err) cb(err); - else if (d) { - maybeRealpath(realpath, d, opts, function (err, realD) { - if (err) { - cb(err); - } else { - cb(null, realD, pkg); + return token; + }; + var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; + while (true) { + state = stack[stack.length - 1]; + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol === null || typeof symbol == 'undefined') { + symbol = lex(); + } + action = table[state] && table[state][symbol]; + } + if (typeof action === 'undefined' || !action.length || !action[0]) { + var errStr = ''; + expected = []; + for (p in table[state]) { + if (this.terminals_[p] && p > TERROR) { + expected.push('\'' + this.terminals_[p] + '\''); } + } + if (lexer.showPosition) { + errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; + } else { + errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); + } + this.parseError(errStr, { + text: lexer.match, + token: this.terminals_[symbol] || symbol, + line: lexer.yylineno, + loc: yyloc, + expected: expected }); - } else { - var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'"); - moduleError.code = 'MODULE_NOT_FOUND'; - cb(moduleError); } - }); - } - - function loadAsFile(x, thePackage, callback) { - var loadAsFilePackage = thePackage; - var cb = callback; - if (typeof loadAsFilePackage === 'function') { - cb = loadAsFilePackage; - loadAsFilePackage = undefined; + if (action[0] instanceof Array && action.length > 1) { + throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); } - - var exts = [''].concat(extensions); - load(exts, x, loadAsFilePackage); - - function load(exts, x, loadPackage) { - if (exts.length === 0) return cb(null, undefined, loadPackage); - var file = x + exts[0]; - - var pkg = loadPackage; - if (pkg) onpkg(null, pkg); - else loadpkg(path.dirname(file), onpkg); - - function onpkg(err, pkg_, dir) { - pkg = pkg_; - if (err) return cb(err); - if (dir && pkg && opts.pathFilter) { - var rfile = path.relative(dir, file); - var rel = rfile.slice(0, rfile.length - exts[0].length); - var r = opts.pathFilter(pkg, x, rel); - if (r) return load( - [''].concat(extensions.slice()), - path.resolve(dir, r), - pkg - ); + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer.yytext); + lstack.push(lexer.yylloc); + stack.push(action[1]); + symbol = null; + if (!preErrorSymbol) { + yyleng = lexer.yyleng; + yytext = lexer.yytext; + yylineno = lexer.yylineno; + yyloc = lexer.yylloc; + if (recovering > 0) { + recovering--; } - isFile(file, onex); + } else { + symbol = preErrorSymbol; + preErrorSymbol = null; } - function onex(err, ex) { - if (err) return cb(err); - if (ex) return cb(null, file, pkg); - load(exts.slice(1), x, pkg); + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r !== 'undefined') { + return r; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; } } + return true; +}}; +/* generated by jison-lex 0.3.4 */ +var lexer = (function(){ +var lexer = ({ - function loadpkg(dir, cb) { - if (dir === '' || dir === '/') return cb(null); - if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { - return cb(null); - } - if ((/[/\\]node_modules[/\\]*$/).test(dir)) return cb(null); - - maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) { - if (unwrapErr) return loadpkg(path.dirname(dir), cb); - var pkgfile = path.join(pkgdir, 'package.json'); - isFile(pkgfile, function (err, ex) { - // on err, ex is false - if (!ex) return loadpkg(path.dirname(dir), cb); - - readPackage(readFile, pkgfile, function (err, pkgParam) { - if (err) cb(err); +EOF:1, - var pkg = pkgParam; +parseError:function parseError(str, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); + } else { + throw new Error(str); + } + }, - if (pkg && opts.packageFilter) { - pkg = opts.packageFilter(pkg, pkgfile); - } - cb(null, pkg, dir); - }); - }); - }); - } +// resets the lexer, sets new input +setInput:function (input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0,0]; + } + this.offset = 0; + return this; + }, - function loadAsDirectory(x, loadAsDirectoryPackage, callback) { - var cb = callback; - var fpkg = loadAsDirectoryPackage; - if (typeof fpkg === 'function') { - cb = fpkg; - fpkg = opts.package; +// consumes and returns one char from the input +input:function () { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; } - maybeRealpath(realpath, x, opts, function (unwrapErr, pkgdir) { - if (unwrapErr) return cb(unwrapErr); - var pkgfile = path.join(pkgdir, 'package.json'); - isFile(pkgfile, function (err, ex) { - if (err) return cb(err); - if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb); + this._input = this._input.slice(1); + return ch; + }, - readPackage(readFile, pkgfile, function (err, pkgParam) { - if (err) return cb(err); +// unshifts one char (or a string) into the input +unput:function (ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); - var pkg = pkgParam; + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + //this.yyleng -= len; + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); - if (pkg && opts.packageFilter) { - pkg = opts.packageFilter(pkg, pkgfile); - } + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r = this.yylloc.range; - if (pkg && pkg.main) { - if (typeof pkg.main !== 'string') { - var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); - mainError.code = 'INVALID_PACKAGE_MAIN'; - return cb(mainError); - } - if (pkg.main === '.' || pkg.main === './') { - pkg.main = 'index'; - } - loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) { - if (err) return cb(err); - if (m) return cb(null, m, pkg); - if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb); - - var dir = path.resolve(x, pkg.main); - loadAsDirectory(dir, pkg, function (err, n, pkg) { - if (err) return cb(err); - if (n) return cb(null, n, pkg); - loadAsFile(path.join(x, 'index'), pkg, cb); - }); - }); - return; - } - - loadAsFile(path.join(x, '/index'), pkg, cb); - }); - }); - }); - } - - function processDirs(cb, dirs) { - if (dirs.length === 0) return cb(null, undefined); - var dir = dirs[0]; - - isDirectory(path.dirname(dir), isdir); - - function isdir(err, isdir) { - if (err) return cb(err); - if (!isdir) return processDirs(cb, dirs.slice(1)); - loadAsFile(dir, opts.package, onfile); - } - - function onfile(err, m, pkg) { - if (err) return cb(err); - if (m) return cb(null, m, pkg); - loadAsDirectory(dir, opts.package, ondir); - } + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? + (lines.length === oldLines.length ? this.yylloc.first_column : 0) + + oldLines[oldLines.length - lines.length].length - lines[0].length : + this.yylloc.first_column - len + }; - function ondir(err, n, pkg) { - if (err) return cb(err); - if (n) return cb(null, n, pkg); - processDirs(cb, dirs.slice(1)); + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; } - } - function loadNodeModules(x, start, cb) { - var thunk = function () { return getPackageCandidates(x, start, opts); }; - processDirs( - cb, - packageIterator ? packageIterator(x, start, thunk, opts) : thunk() - ); - } -}; + this.yyleng = this.yytext.length; + return this; + }, +// When called from action, caches matched text and appends it on next action +more:function () { + this._more = true; + return this; + }, -/***/ }), +// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. +reject:function () { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); -/***/ "../../node_modules/resolve/lib/caller.js": -/***/ (function(module, exports) { + } + return this; + }, -module.exports = function () { - // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi - var origPrepareStackTrace = Error.prepareStackTrace; - Error.prepareStackTrace = function (_, stack) { return stack; }; - var stack = (new Error()).stack; - Error.prepareStackTrace = origPrepareStackTrace; - return stack[2].getFileName(); -}; +// retain first n characters of the match +less:function (n) { + this.unput(this.match.slice(n)); + }, +// displays already matched input, i.e. for error messages +pastInput:function () { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); + }, -/***/ }), +// displays upcoming input, i.e. for error messages +upcomingInput:function () { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20-next.length); + } + return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); + }, -/***/ "../../node_modules/resolve/lib/core.js": -/***/ (function(module, exports, __webpack_require__) { +// displays the character position where the lexing error occurred, i.e. for error messages +showPosition:function () { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c + "^"; + }, -var current = (process.versions && process.versions.node && process.versions.node.split('.')) || []; +// test the lexed token: return FALSE when not a match, otherwise return token +test_match:function (match, indexed_rule) { + var token, + lines, + backup; -function specifierIncluded(specifier) { - var parts = specifier.split(' '); - var op = parts.length > 1 ? parts[0] : '='; - var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.'); + if (this.options.backtrack_lexer) { + // save context + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } - for (var i = 0; i < 3; ++i) { - var cur = parseInt(current[i] || 0, 10); - var ver = parseInt(versionParts[i] || 0, 10); - if (cur === ver) { - continue; // eslint-disable-line no-restricted-syntax, no-continue + lines = match[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; } - if (op === '<') { - return cur < ver; - } else if (op === '>=') { - return cur >= ver; + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? + lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : + this.yylloc.last_column + match[0].length + }; + this.yytext += match[0]; + this.match += match[0]; + this.matches = match; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; } - return false; - } - return op === '>='; -} - -function matchesRange(range) { - var specifiers = range.split(/ ?&& ?/); - if (specifiers.length === 0) { return false; } - for (var i = 0; i < specifiers.length; ++i) { - if (!specifierIncluded(specifiers[i])) { return false; } - } - return true; -} - -function versionIncluded(specifierValue) { - if (typeof specifierValue === 'boolean') { return specifierValue; } - if (specifierValue && typeof specifierValue === 'object') { - for (var i = 0; i < specifierValue.length; ++i) { - if (matchesRange(specifierValue[i])) { return true; } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token) { + return token; + } else if (this._backtrack) { + // recover context + for (var k in backup) { + this[k] = backup[k]; + } + return false; // rule action called reject() implying the next rule should be tested instead. } return false; - } - return matchesRange(specifierValue); -} - -var data = __webpack_require__("../../node_modules/resolve/lib/core.json"); - -var core = {}; -for (var mod in data) { // eslint-disable-line no-restricted-syntax - if (Object.prototype.hasOwnProperty.call(data, mod)) { - core[mod] = versionIncluded(data[mod]); - } -} -module.exports = core; - - -/***/ }), - -/***/ "../../node_modules/resolve/lib/core.json": -/***/ (function(module) { - -module.exports = JSON.parse("{\"assert\":true,\"node:assert\":[\">= 14.18 && < 15\",\">= 16\"],\"assert/strict\":\">= 15\",\"node:assert/strict\":\">= 16\",\"async_hooks\":\">= 8\",\"node:async_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"buffer_ieee754\":\">= 0.5 && < 0.9.7\",\"buffer\":true,\"node:buffer\":[\">= 14.18 && < 15\",\">= 16\"],\"child_process\":true,\"node:child_process\":[\">= 14.18 && < 15\",\">= 16\"],\"cluster\":\">= 0.5\",\"node:cluster\":[\">= 14.18 && < 15\",\">= 16\"],\"console\":true,\"node:console\":[\">= 14.18 && < 15\",\">= 16\"],\"constants\":true,\"node:constants\":[\">= 14.18 && < 15\",\">= 16\"],\"crypto\":true,\"node:crypto\":[\">= 14.18 && < 15\",\">= 16\"],\"_debug_agent\":\">= 1 && < 8\",\"_debugger\":\"< 8\",\"dgram\":true,\"node:dgram\":[\">= 14.18 && < 15\",\">= 16\"],\"diagnostics_channel\":[\">= 14.17 && < 15\",\">= 15.1\"],\"node:diagnostics_channel\":[\">= 14.18 && < 15\",\">= 16\"],\"dns\":true,\"node:dns\":[\">= 14.18 && < 15\",\">= 16\"],\"dns/promises\":\">= 15\",\"node:dns/promises\":\">= 16\",\"domain\":\">= 0.7.12\",\"node:domain\":[\">= 14.18 && < 15\",\">= 16\"],\"events\":true,\"node:events\":[\">= 14.18 && < 15\",\">= 16\"],\"freelist\":\"< 6\",\"fs\":true,\"node:fs\":[\">= 14.18 && < 15\",\">= 16\"],\"fs/promises\":[\">= 10 && < 10.1\",\">= 14\"],\"node:fs/promises\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_agent\":\">= 0.11.1\",\"node:_http_agent\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_client\":\">= 0.11.1\",\"node:_http_client\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_common\":\">= 0.11.1\",\"node:_http_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_incoming\":\">= 0.11.1\",\"node:_http_incoming\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_outgoing\":\">= 0.11.1\",\"node:_http_outgoing\":[\">= 14.18 && < 15\",\">= 16\"],\"_http_server\":\">= 0.11.1\",\"node:_http_server\":[\">= 14.18 && < 15\",\">= 16\"],\"http\":true,\"node:http\":[\">= 14.18 && < 15\",\">= 16\"],\"http2\":\">= 8.8\",\"node:http2\":[\">= 14.18 && < 15\",\">= 16\"],\"https\":true,\"node:https\":[\">= 14.18 && < 15\",\">= 16\"],\"inspector\":\">= 8\",\"node:inspector\":[\">= 14.18 && < 15\",\">= 16\"],\"_linklist\":\"< 8\",\"module\":true,\"node:module\":[\">= 14.18 && < 15\",\">= 16\"],\"net\":true,\"node:net\":[\">= 14.18 && < 15\",\">= 16\"],\"node-inspect/lib/_inspect\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_client\":\">= 7.6 && < 12\",\"node-inspect/lib/internal/inspect_repl\":\">= 7.6 && < 12\",\"os\":true,\"node:os\":[\">= 14.18 && < 15\",\">= 16\"],\"path\":true,\"node:path\":[\">= 14.18 && < 15\",\">= 16\"],\"path/posix\":\">= 15.3\",\"node:path/posix\":\">= 16\",\"path/win32\":\">= 15.3\",\"node:path/win32\":\">= 16\",\"perf_hooks\":\">= 8.5\",\"node:perf_hooks\":[\">= 14.18 && < 15\",\">= 16\"],\"process\":\">= 1\",\"node:process\":[\">= 14.18 && < 15\",\">= 16\"],\"punycode\":\">= 0.5\",\"node:punycode\":[\">= 14.18 && < 15\",\">= 16\"],\"querystring\":true,\"node:querystring\":[\">= 14.18 && < 15\",\">= 16\"],\"readline\":true,\"node:readline\":[\">= 14.18 && < 15\",\">= 16\"],\"readline/promises\":\">= 17\",\"node:readline/promises\":\">= 17\",\"repl\":true,\"node:repl\":[\">= 14.18 && < 15\",\">= 16\"],\"smalloc\":\">= 0.11.5 && < 3\",\"_stream_duplex\":\">= 0.9.4\",\"node:_stream_duplex\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_transform\":\">= 0.9.4\",\"node:_stream_transform\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_wrap\":\">= 1.4.1\",\"node:_stream_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_passthrough\":\">= 0.9.4\",\"node:_stream_passthrough\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_readable\":\">= 0.9.4\",\"node:_stream_readable\":[\">= 14.18 && < 15\",\">= 16\"],\"_stream_writable\":\">= 0.9.4\",\"node:_stream_writable\":[\">= 14.18 && < 15\",\">= 16\"],\"stream\":true,\"node:stream\":[\">= 14.18 && < 15\",\">= 16\"],\"stream/consumers\":\">= 16.7\",\"node:stream/consumers\":\">= 16.7\",\"stream/promises\":\">= 15\",\"node:stream/promises\":\">= 16\",\"stream/web\":\">= 16.5\",\"node:stream/web\":\">= 16.5\",\"string_decoder\":true,\"node:string_decoder\":[\">= 14.18 && < 15\",\">= 16\"],\"sys\":[\">= 0.4 && < 0.7\",\">= 0.8\"],\"node:sys\":[\">= 14.18 && < 15\",\">= 16\"],\"timers\":true,\"node:timers\":[\">= 14.18 && < 15\",\">= 16\"],\"timers/promises\":\">= 15\",\"node:timers/promises\":\">= 16\",\"_tls_common\":\">= 0.11.13\",\"node:_tls_common\":[\">= 14.18 && < 15\",\">= 16\"],\"_tls_legacy\":\">= 0.11.3 && < 10\",\"_tls_wrap\":\">= 0.11.3\",\"node:_tls_wrap\":[\">= 14.18 && < 15\",\">= 16\"],\"tls\":true,\"node:tls\":[\">= 14.18 && < 15\",\">= 16\"],\"trace_events\":\">= 10\",\"node:trace_events\":[\">= 14.18 && < 15\",\">= 16\"],\"tty\":true,\"node:tty\":[\">= 14.18 && < 15\",\">= 16\"],\"url\":true,\"node:url\":[\">= 14.18 && < 15\",\">= 16\"],\"util\":true,\"node:util\":[\">= 14.18 && < 15\",\">= 16\"],\"util/types\":\">= 15.3\",\"node:util/types\":\">= 16\",\"v8/tools/arguments\":\">= 10 && < 12\",\"v8/tools/codemap\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/consarray\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/csvparser\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/logreader\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/profile_view\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8/tools/splaytree\":[\">= 4.4 && < 5\",\">= 5.2 && < 12\"],\"v8\":\">= 1\",\"node:v8\":[\">= 14.18 && < 15\",\">= 16\"],\"vm\":true,\"node:vm\":[\">= 14.18 && < 15\",\">= 16\"],\"wasi\":\">= 13.4 && < 13.5\",\"worker_threads\":\">= 11.7\",\"node:worker_threads\":[\">= 14.18 && < 15\",\">= 16\"],\"zlib\":\">= 0.5\",\"node:zlib\":[\">= 14.18 && < 15\",\">= 16\"]}"); - -/***/ }), - -/***/ "../../node_modules/resolve/lib/homedir.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var os = __webpack_require__("os"); - -// adapted from https://github.com/sindresorhus/os-homedir/blob/11e089f4754db38bb535e5a8416320c4446e8cfd/index.js - -module.exports = os.homedir || function homedir() { - var home = process.env.HOME; - var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME; - - if (process.platform === 'win32') { - return process.env.USERPROFILE || process.env.HOMEDRIVE + process.env.HOMEPATH || home || null; - } - - if (process.platform === 'darwin') { - return home || (user ? '/Users/' + user : null); - } - - if (process.platform === 'linux') { - return home || (process.getuid() === 0 ? '/root' : (user ? '/home/' + user : null)); // eslint-disable-line no-extra-parens - } - - return home || null; -}; - - -/***/ }), - -/***/ "../../node_modules/resolve/lib/is-core.js": -/***/ (function(module, exports, __webpack_require__) { - -var isCoreModule = __webpack_require__("../../node_modules/is-core-module/index.js"); - -module.exports = function isCore(x) { - return isCoreModule(x); -}; - - -/***/ }), - -/***/ "../../node_modules/resolve/lib/node-modules-paths.js": -/***/ (function(module, exports, __webpack_require__) { - -var path = __webpack_require__("path"); -var parse = path.parse || __webpack_require__("../../node_modules/path-parse/index.js"); // eslint-disable-line global-require - -var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) { - var prefix = '/'; - if ((/^([A-Za-z]:)/).test(absoluteStart)) { - prefix = ''; - } else if ((/^\\\\/).test(absoluteStart)) { - prefix = '\\\\'; - } - - var paths = [absoluteStart]; - var parsed = parse(absoluteStart); - while (parsed.dir !== paths[paths.length - 1]) { - paths.push(parsed.dir); - parsed = parse(parsed.dir); - } - - return paths.reduce(function (dirs, aPath) { - return dirs.concat(modules.map(function (moduleDir) { - return path.resolve(prefix, aPath, moduleDir); - })); - }, []); -}; - -module.exports = function nodeModulesPaths(start, opts, request) { - var modules = opts && opts.moduleDirectory - ? [].concat(opts.moduleDirectory) - : ['node_modules']; - - if (opts && typeof opts.paths === 'function') { - return opts.paths( - request, - start, - function () { return getNodeModulesDirs(start, modules); }, - opts - ); - } - - var dirs = getNodeModulesDirs(start, modules); - return opts && opts.paths ? dirs.concat(opts.paths) : dirs; -}; - - -/***/ }), - -/***/ "../../node_modules/resolve/lib/normalize-options.js": -/***/ (function(module, exports) { - -module.exports = function (x, opts) { - /** - * This file is purposefully a passthrough. It's expected that third-party - * environments will override it at runtime in order to inject special logic - * into `resolve` (by manipulating the options). One such example is the PnP - * code path in Yarn. - */ - - return opts || {}; -}; - - -/***/ }), + }, -/***/ "../../node_modules/resolve/lib/sync.js": -/***/ (function(module, exports, __webpack_require__) { +// return next match in input +next:function () { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } -var isCore = __webpack_require__("../../node_modules/is-core-module/index.js"); -var fs = __webpack_require__("fs"); -var path = __webpack_require__("path"); -var getHomedir = __webpack_require__("../../node_modules/resolve/lib/homedir.js"); -var caller = __webpack_require__("../../node_modules/resolve/lib/caller.js"); -var nodeModulesPaths = __webpack_require__("../../node_modules/resolve/lib/node-modules-paths.js"); -var normalizeOptions = __webpack_require__("../../node_modules/resolve/lib/normalize-options.js"); + var token, + match, + tempMatch, + index; + if (!this._more) { + this.yytext = ''; + this.match = ''; + } + var rules = this._currentRules(); + for (var i = 0; i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (this.options.backtrack_lexer) { + token = this.test_match(tempMatch, rules[i]); + if (token !== false) { + return token; + } else if (this._backtrack) { + match = false; + continue; // rule action called reject() implying a rule MISmatch. + } else { + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match) { + token = this.test_match(match, rules[index]); + if (token !== false) { + return token; + } + // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, -var realpathFS = fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync; +// return next match that has a token +lex:function lex() { + var r = this.next(); + if (r) { + return r; + } else { + return this.lex(); + } + }, -var homedir = getHomedir(); -var defaultPaths = function () { - return [ - path.join(homedir, '.node_modules'), - path.join(homedir, '.node_libraries') - ]; -}; +// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) +begin:function begin(condition) { + this.conditionStack.push(condition); + }, -var defaultIsFile = function isFile(file) { - try { - var stat = fs.statSync(file, { throwIfNoEntry: false }); - } catch (e) { - if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; - throw e; - } - return !!stat && (stat.isFile() || stat.isFIFO()); -}; +// pop the previously active lexer condition state off the condition stack +popState:function popState() { + var n = this.conditionStack.length - 1; + if (n > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, -var defaultIsDir = function isDirectory(dir) { - try { - var stat = fs.statSync(dir, { throwIfNoEntry: false }); - } catch (e) { - if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false; - throw e; - } - return !!stat && stat.isDirectory(); -}; +// produce the lexer rule set which is active for the currently active lexer condition state +_currentRules:function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, -var defaultRealpathSync = function realpathSync(x) { - try { - return realpathFS(x); - } catch (realpathErr) { - if (realpathErr.code !== 'ENOENT') { - throw realpathErr; +// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available +topState:function topState(n) { + n = this.conditionStack.length - 1 - Math.abs(n || 0); + if (n >= 0) { + return this.conditionStack[n]; + } else { + return "INITIAL"; } - } - return x; -}; + }, -var maybeRealpathSync = function maybeRealpathSync(realpathSync, x, opts) { - if (opts && opts.preserveSymlinks === false) { - return realpathSync(x); - } - return x; -}; +// alias for begin(condition) +pushState:function pushState(condition) { + this.begin(condition); + }, -var defaultReadPackageSync = function defaultReadPackageSync(readFileSync, pkgfile) { - var body = readFileSync(pkgfile); - try { - var pkg = JSON.parse(body); - return pkg; - } catch (jsonErr) {} -}; - -var getPackageCandidates = function getPackageCandidates(x, start, opts) { - var dirs = nodeModulesPaths(start, opts, x); - for (var i = 0; i < dirs.length; i++) { - dirs[i] = path.join(dirs[i], x); - } - return dirs; -}; - -module.exports = function resolveSync(x, options) { - if (typeof x !== 'string') { - throw new TypeError('Path must be a string.'); - } - var opts = normalizeOptions(x, options); - - var isFile = opts.isFile || defaultIsFile; - var readFileSync = opts.readFileSync || fs.readFileSync; - var isDirectory = opts.isDirectory || defaultIsDir; - var realpathSync = opts.realpathSync || defaultRealpathSync; - var readPackageSync = opts.readPackageSync || defaultReadPackageSync; - if (opts.readFileSync && opts.readPackageSync) { - throw new TypeError('`readFileSync` and `readPackageSync` are mutually exclusive.'); - } - var packageIterator = opts.packageIterator; - - var extensions = opts.extensions || ['.js']; - var includeCoreModules = opts.includeCoreModules !== false; - var basedir = opts.basedir || path.dirname(caller()); - var parent = opts.filename || basedir; - - opts.paths = opts.paths || defaultPaths(); - - // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory - var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts); - - if ((/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/).test(x)) { - var res = path.resolve(absoluteStart, x); - if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/'; - var m = loadAsFileSync(res) || loadAsDirectorySync(res); - if (m) return maybeRealpathSync(realpathSync, m, opts); - } else if (includeCoreModules && isCore(x)) { - return x; - } else { - var n = loadNodeModulesSync(x, absoluteStart); - if (n) return maybeRealpathSync(realpathSync, n, opts); - } - - var err = new Error("Cannot find module '" + x + "' from '" + parent + "'"); - err.code = 'MODULE_NOT_FOUND'; - throw err; - - function loadAsFileSync(x) { - var pkg = loadpkg(path.dirname(x)); - - if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) { - var rfile = path.relative(pkg.dir, x); - var r = opts.pathFilter(pkg.pkg, x, rfile); - if (r) { - x = path.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign - } - } - - if (isFile(x)) { - return x; - } - - for (var i = 0; i < extensions.length; i++) { - var file = x + extensions[i]; - if (isFile(file)) { - return file; - } - } - } - - function loadpkg(dir) { - if (dir === '' || dir === '/') return; - if (process.platform === 'win32' && (/^\w:[/\\]*$/).test(dir)) { - return; - } - if ((/[/\\]node_modules[/\\]*$/).test(dir)) return; - - var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json'); - - if (!isFile(pkgfile)) { - return loadpkg(path.dirname(dir)); - } - - var pkg = readPackageSync(readFileSync, pkgfile); - - if (pkg && opts.packageFilter) { - // v2 will pass pkgfile - pkg = opts.packageFilter(pkg, /*pkgfile,*/ dir); // eslint-disable-line spaced-comment - } - - return { pkg: pkg, dir: dir }; - } - - function loadAsDirectorySync(x) { - var pkgfile = path.join(maybeRealpathSync(realpathSync, x, opts), '/package.json'); - if (isFile(pkgfile)) { - try { - var pkg = readPackageSync(readFileSync, pkgfile); - } catch (e) {} - - if (pkg && opts.packageFilter) { - // v2 will pass pkgfile - pkg = opts.packageFilter(pkg, /*pkgfile,*/ x); // eslint-disable-line spaced-comment - } - - if (pkg && pkg.main) { - if (typeof pkg.main !== 'string') { - var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string'); - mainError.code = 'INVALID_PACKAGE_MAIN'; - throw mainError; - } - if (pkg.main === '.' || pkg.main === './') { - pkg.main = 'index'; - } - try { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - var n = loadAsDirectorySync(path.resolve(x, pkg.main)); - if (n) return n; - } catch (e) {} - } - } - - return loadAsFileSync(path.join(x, '/index')); - } - - function loadNodeModulesSync(x, start) { - var thunk = function () { return getPackageCandidates(x, start, opts); }; - var dirs = packageIterator ? packageIterator(x, start, thunk, opts) : thunk(); - - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - if (isDirectory(path.dirname(dir))) { - var m = loadAsFileSync(dir); - if (m) return m; - var n = loadAsDirectorySync(dir); - if (n) return n; - } - } - } -}; - - -/***/ }), - -/***/ "../../node_modules/restore-cursor/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const onetime = __webpack_require__("../../node_modules/onetime/index.js"); -const signalExit = __webpack_require__("../../node_modules/signal-exit/index.js"); - -module.exports = onetime(() => { - signalExit(() => { - process.stderr.write('\u001B[?25h'); - }, {alwaysLast: true}); -}); - - -/***/ }), - -/***/ "../../node_modules/ret/lib/index.js": -/***/ (function(module, exports, __webpack_require__) { - -var util = __webpack_require__("../../node_modules/ret/lib/util.js"); -var types = __webpack_require__("../../node_modules/ret/lib/types.js"); -var sets = __webpack_require__("../../node_modules/ret/lib/sets.js"); -var positions = __webpack_require__("../../node_modules/ret/lib/positions.js"); - - -module.exports = function(regexpStr) { - var i = 0, l, c, - start = { type: types.ROOT, stack: []}, - - // Keep track of last clause/group and stack. - lastGroup = start, - last = start.stack, - groupStack = []; - - - var repeatErr = function(i) { - util.error(regexpStr, 'Nothing to repeat at column ' + (i - 1)); - }; - - // Decode a few escaped characters. - var str = util.strToChars(regexpStr); - l = str.length; - - // Iterate through each character in string. - while (i < l) { - c = str[i++]; - - switch (c) { - // Handle escaped characters, inclues a few sets. - case '\\': - c = str[i++]; - - switch (c) { - case 'b': - last.push(positions.wordBoundary()); - break; - - case 'B': - last.push(positions.nonWordBoundary()); - break; - - case 'w': - last.push(sets.words()); - break; - - case 'W': - last.push(sets.notWords()); - break; - - case 'd': - last.push(sets.ints()); - break; - - case 'D': - last.push(sets.notInts()); - break; - - case 's': - last.push(sets.whitespace()); - break; - - case 'S': - last.push(sets.notWhitespace()); - break; - - default: - // Check if c is integer. - // In which case it's a reference. - if (/\d/.test(c)) { - last.push({ type: types.REFERENCE, value: parseInt(c, 10) }); - - // Escaped character. - } else { - last.push({ type: types.CHAR, value: c.charCodeAt(0) }); - } - } - - break; - - - // Positionals. - case '^': - last.push(positions.begin()); - break; - - case '$': - last.push(positions.end()); - break; - - - // Handle custom sets. - case '[': - // Check if this class is 'anti' i.e. [^abc]. - var not; - if (str[i] === '^') { - not = true; - i++; - } else { - not = false; - } - - // Get all the characters in class. - var classTokens = util.tokenizeClass(str.slice(i), regexpStr); - - // Increase index by length of class. - i += classTokens[1]; - last.push({ - type: types.SET, - set: classTokens[0], - not: not, - }); - - break; - - - // Class of any character except \n. - case '.': - last.push(sets.anyChar()); - break; - - - // Push group onto stack. - case '(': - // Create group. - var group = { - type: types.GROUP, - stack: [], - remember: true, - }; - - c = str[i]; - - // If if this is a special kind of group. - if (c === '?') { - c = str[i + 1]; - i += 2; - - // Match if followed by. - if (c === '=') { - group.followedBy = true; - - // Match if not followed by. - } else if (c === '!') { - group.notFollowedBy = true; - - } else if (c !== ':') { - util.error(regexpStr, - 'Invalid group, character \'' + c + - '\' after \'?\' at column ' + (i - 1)); - } - - group.remember = false; - } - - // Insert subgroup into current group stack. - last.push(group); - - // Remember the current group for when the group closes. - groupStack.push(lastGroup); - - // Make this new group the current group. - lastGroup = group; - last = group.stack; - break; - - - // Pop group out of stack. - case ')': - if (groupStack.length === 0) { - util.error(regexpStr, 'Unmatched ) at column ' + (i - 1)); - } - lastGroup = groupStack.pop(); - - // Check if this group has a PIPE. - // To get back the correct last stack. - last = lastGroup.options ? - lastGroup.options[lastGroup.options.length - 1] : lastGroup.stack; - break; - - - // Use pipe character to give more choices. - case '|': - // Create array where options are if this is the first PIPE - // in this clause. - if (!lastGroup.options) { - lastGroup.options = [lastGroup.stack]; - delete lastGroup.stack; - } - - // Create a new stack and add to options for rest of clause. - var stack = []; - lastGroup.options.push(stack); - last = stack; - break; - - - // Repetition. - // For every repetition, remove last element from last stack - // then insert back a RANGE object. - // This design is chosen because there could be more than - // one repetition symbols in a regex i.e. `a?+{2,3}`. - case '{': - var rs = /^(\d+)(,(\d+)?)?\}/.exec(str.slice(i)), min, max; - if (rs !== null) { - if (last.length === 0) { - repeatErr(i); - } - min = parseInt(rs[1], 10); - max = rs[2] ? rs[3] ? parseInt(rs[3], 10) : Infinity : min; - i += rs[0].length; - - last.push({ - type: types.REPETITION, - min: min, - max: max, - value: last.pop(), - }); - } else { - last.push({ - type: types.CHAR, - value: 123, - }); - } - break; - - case '?': - if (last.length === 0) { - repeatErr(i); - } - last.push({ - type: types.REPETITION, - min: 0, - max: 1, - value: last.pop(), - }); - break; - - case '+': - if (last.length === 0) { - repeatErr(i); - } - last.push({ - type: types.REPETITION, - min: 1, - max: Infinity, - value: last.pop(), - }); - break; - - case '*': - if (last.length === 0) { - repeatErr(i); - } - last.push({ - type: types.REPETITION, - min: 0, - max: Infinity, - value: last.pop(), - }); - break; - - - // Default is a character that is not `\[](){}?+*^$`. - default: - last.push({ - type: types.CHAR, - value: c.charCodeAt(0), - }); - } - - } - - // Check if any groups have not been closed. - if (groupStack.length !== 0) { - util.error(regexpStr, 'Unterminated group'); - } - - return start; -}; - -module.exports.types = types; - - -/***/ }), - -/***/ "../../node_modules/ret/lib/positions.js": -/***/ (function(module, exports, __webpack_require__) { - -var types = __webpack_require__("../../node_modules/ret/lib/types.js"); - -exports.wordBoundary = function() { - return { type: types.POSITION, value: 'b' }; -}; - -exports.nonWordBoundary = function() { - return { type: types.POSITION, value: 'B' }; -}; - -exports.begin = function() { - return { type: types.POSITION, value: '^' }; -}; - -exports.end = function() { - return { type: types.POSITION, value: '$' }; -}; - - -/***/ }), - -/***/ "../../node_modules/ret/lib/sets.js": -/***/ (function(module, exports, __webpack_require__) { - -var types = __webpack_require__("../../node_modules/ret/lib/types.js"); - -var INTS = function() { - return [{ type: types.RANGE , from: 48, to: 57 }]; -}; - -var WORDS = function() { - return [ - { type: types.CHAR, value: 95 }, - { type: types.RANGE, from: 97, to: 122 }, - { type: types.RANGE, from: 65, to: 90 } - ].concat(INTS()); -}; - -var WHITESPACE = function() { - return [ - { type: types.CHAR, value: 9 }, - { type: types.CHAR, value: 10 }, - { type: types.CHAR, value: 11 }, - { type: types.CHAR, value: 12 }, - { type: types.CHAR, value: 13 }, - { type: types.CHAR, value: 32 }, - { type: types.CHAR, value: 160 }, - { type: types.CHAR, value: 5760 }, - { type: types.CHAR, value: 6158 }, - { type: types.CHAR, value: 8192 }, - { type: types.CHAR, value: 8193 }, - { type: types.CHAR, value: 8194 }, - { type: types.CHAR, value: 8195 }, - { type: types.CHAR, value: 8196 }, - { type: types.CHAR, value: 8197 }, - { type: types.CHAR, value: 8198 }, - { type: types.CHAR, value: 8199 }, - { type: types.CHAR, value: 8200 }, - { type: types.CHAR, value: 8201 }, - { type: types.CHAR, value: 8202 }, - { type: types.CHAR, value: 8232 }, - { type: types.CHAR, value: 8233 }, - { type: types.CHAR, value: 8239 }, - { type: types.CHAR, value: 8287 }, - { type: types.CHAR, value: 12288 }, - { type: types.CHAR, value: 65279 } - ]; -}; - -var NOTANYCHAR = function() { - return [ - { type: types.CHAR, value: 10 }, - { type: types.CHAR, value: 13 }, - { type: types.CHAR, value: 8232 }, - { type: types.CHAR, value: 8233 }, - ]; -}; - -// Predefined class objects. -exports.words = function() { - return { type: types.SET, set: WORDS(), not: false }; -}; - -exports.notWords = function() { - return { type: types.SET, set: WORDS(), not: true }; -}; - -exports.ints = function() { - return { type: types.SET, set: INTS(), not: false }; -}; - -exports.notInts = function() { - return { type: types.SET, set: INTS(), not: true }; -}; - -exports.whitespace = function() { - return { type: types.SET, set: WHITESPACE(), not: false }; -}; - -exports.notWhitespace = function() { - return { type: types.SET, set: WHITESPACE(), not: true }; -}; - -exports.anyChar = function() { - return { type: types.SET, set: NOTANYCHAR(), not: true }; -}; - - -/***/ }), - -/***/ "../../node_modules/ret/lib/types.js": -/***/ (function(module, exports) { - -module.exports = { - ROOT : 0, - GROUP : 1, - POSITION : 2, - SET : 3, - RANGE : 4, - REPETITION : 5, - REFERENCE : 6, - CHAR : 7, -}; - - -/***/ }), - -/***/ "../../node_modules/ret/lib/util.js": -/***/ (function(module, exports, __webpack_require__) { - -var types = __webpack_require__("../../node_modules/ret/lib/types.js"); -var sets = __webpack_require__("../../node_modules/ret/lib/sets.js"); - - -// All of these are private and only used by randexp. -// It's assumed that they will always be called with the correct input. - -var CTRL = '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^ ?'; -var SLSH = { '0': 0, 't': 9, 'n': 10, 'v': 11, 'f': 12, 'r': 13 }; - -/** - * Finds character representations in str and convert all to - * their respective characters - * - * @param {String} str - * @return {String} - */ -exports.strToChars = function(str) { - /* jshint maxlen: false */ - var chars_regex = /(\[\\b\])|(\\)?\\(?:u([A-F0-9]{4})|x([A-F0-9]{2})|(0?[0-7]{2})|c([@A-Z\[\\\]\^?])|([0tnvfr]))/g; - str = str.replace(chars_regex, function(s, b, lbs, a16, b16, c8, dctrl, eslsh) { - if (lbs) { - return s; - } - - var code = b ? 8 : - a16 ? parseInt(a16, 16) : - b16 ? parseInt(b16, 16) : - c8 ? parseInt(c8, 8) : - dctrl ? CTRL.indexOf(dctrl) : - SLSH[eslsh]; - - var c = String.fromCharCode(code); - - // Escape special regex characters. - if (/[\[\]{}\^$.|?*+()]/.test(c)) { - c = '\\' + c; - } - - return c; - }); - - return str; -}; - - -/** - * turns class into tokens - * reads str until it encounters a ] not preceeded by a \ - * - * @param {String} str - * @param {String} regexpStr - * @return {Array., Number>} - */ -exports.tokenizeClass = function(str, regexpStr) { - /* jshint maxlen: false */ - var tokens = []; - var regexp = /\\(?:(w)|(d)|(s)|(W)|(D)|(S))|((?:(?:\\)(.)|([^\]\\]))-(?:\\)?([^\]]))|(\])|(?:\\)?(.)/g; - var rs, c; - - - while ((rs = regexp.exec(str)) != null) { - if (rs[1]) { - tokens.push(sets.words()); - - } else if (rs[2]) { - tokens.push(sets.ints()); - - } else if (rs[3]) { - tokens.push(sets.whitespace()); - - } else if (rs[4]) { - tokens.push(sets.notWords()); - - } else if (rs[5]) { - tokens.push(sets.notInts()); - - } else if (rs[6]) { - tokens.push(sets.notWhitespace()); - - } else if (rs[7]) { - tokens.push({ - type: types.RANGE, - from: (rs[8] || rs[9]).charCodeAt(0), - to: rs[10].charCodeAt(0), - }); - - } else if (c = rs[12]) { - tokens.push({ - type: types.CHAR, - value: c.charCodeAt(0), - }); - - } else { - return [tokens, regexp.lastIndex]; - } - } - - exports.error(regexpStr, 'Unterminated character class'); -}; - - -/** - * Shortcut to throw errors. - * - * @param {String} regexp - * @param {String} msg - */ -exports.error = function(regexp, msg) { - throw new SyntaxError('Invalid regular expression: /' + regexp + '/: ' + msg); -}; - - -/***/ }), - -/***/ "../../node_modules/reusify/reusify.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function reusify (Constructor) { - var head = new Constructor() - var tail = head - - function get () { - var current = head - - if (current.next) { - head = current.next - } else { - head = new Constructor() - tail = head - } - - current.next = null - - return current - } - - function release (obj) { - tail.next = obj - tail = obj - } - - return { - get: get, - release: release - } -} - -module.exports = reusify - - -/***/ }), - -/***/ "../../node_modules/rimraf/rimraf.js": -/***/ (function(module, exports, __webpack_require__) { - -const assert = __webpack_require__("assert") -const path = __webpack_require__("path") -const fs = __webpack_require__("fs") -let glob = undefined -try { - glob = __webpack_require__("../../node_modules/glob/glob.js") -} catch (_err) { - // treat glob as optional. -} - -const defaultGlobOpts = { - nosort: true, - silent: true -} - -// for EMFILE handling -let timeout = 0 - -const isWindows = (process.platform === "win32") - -const defaults = options => { - const methods = [ - 'unlink', - 'chmod', - 'stat', - 'lstat', - 'rmdir', - 'readdir' - ] - methods.forEach(m => { - options[m] = options[m] || fs[m] - m = m + 'Sync' - options[m] = options[m] || fs[m] - }) - - options.maxBusyTries = options.maxBusyTries || 3 - options.emfileWait = options.emfileWait || 1000 - if (options.glob === false) { - options.disableGlob = true - } - if (options.disableGlob !== true && glob === undefined) { - throw Error('glob dependency not found, set `options.disableGlob = true` if intentional') - } - options.disableGlob = options.disableGlob || false - options.glob = options.glob || defaultGlobOpts -} - -const rimraf = (p, options, cb) => { - if (typeof options === 'function') { - cb = options - options = {} - } - - assert(p, 'rimraf: missing path') - assert.equal(typeof p, 'string', 'rimraf: path should be a string') - assert.equal(typeof cb, 'function', 'rimraf: callback function required') - assert(options, 'rimraf: invalid options argument provided') - assert.equal(typeof options, 'object', 'rimraf: options should be object') - - defaults(options) - - let busyTries = 0 - let errState = null - let n = 0 - - const next = (er) => { - errState = errState || er - if (--n === 0) - cb(errState) - } - - const afterGlob = (er, results) => { - if (er) - return cb(er) - - n = results.length - if (n === 0) - return cb() - - results.forEach(p => { - const CB = (er) => { - if (er) { - if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && - busyTries < options.maxBusyTries) { - busyTries ++ - // try again, with the same exact callback as this one. - return setTimeout(() => rimraf_(p, options, CB), busyTries * 100) - } - - // this one won't happen if graceful-fs is used. - if (er.code === "EMFILE" && timeout < options.emfileWait) { - return setTimeout(() => rimraf_(p, options, CB), timeout ++) - } - - // already gone - if (er.code === "ENOENT") er = null - } - - timeout = 0 - next(er) - } - rimraf_(p, options, CB) - }) - } - - if (options.disableGlob || !glob.hasMagic(p)) - return afterGlob(null, [p]) - - options.lstat(p, (er, stat) => { - if (!er) - return afterGlob(null, [p]) - - glob(p, options.glob, afterGlob) - }) - -} - -// Two possible strategies. -// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR -// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR -// -// Both result in an extra syscall when you guess wrong. However, there -// are likely far more normal files in the world than directories. This -// is based on the assumption that a the average number of files per -// directory is >= 1. -// -// If anyone ever complains about this, then I guess the strategy could -// be made configurable somehow. But until then, YAGNI. -const rimraf_ = (p, options, cb) => { - assert(p) - assert(options) - assert(typeof cb === 'function') - - // sunos lets the root user unlink directories, which is... weird. - // so we have to lstat here and make sure it's not a dir. - options.lstat(p, (er, st) => { - if (er && er.code === "ENOENT") - return cb(null) - - // Windows can EPERM on stat. Life is suffering. - if (er && er.code === "EPERM" && isWindows) - fixWinEPERM(p, options, er, cb) - - if (st && st.isDirectory()) - return rmdir(p, options, er, cb) - - options.unlink(p, er => { - if (er) { - if (er.code === "ENOENT") - return cb(null) - if (er.code === "EPERM") - return (isWindows) - ? fixWinEPERM(p, options, er, cb) - : rmdir(p, options, er, cb) - if (er.code === "EISDIR") - return rmdir(p, options, er, cb) - } - return cb(er) - }) - }) -} - -const fixWinEPERM = (p, options, er, cb) => { - assert(p) - assert(options) - assert(typeof cb === 'function') - - options.chmod(p, 0o666, er2 => { - if (er2) - cb(er2.code === "ENOENT" ? null : er) - else - options.stat(p, (er3, stats) => { - if (er3) - cb(er3.code === "ENOENT" ? null : er) - else if (stats.isDirectory()) - rmdir(p, options, er, cb) - else - options.unlink(p, cb) - }) - }) -} - -const fixWinEPERMSync = (p, options, er) => { - assert(p) - assert(options) - - try { - options.chmodSync(p, 0o666) - } catch (er2) { - if (er2.code === "ENOENT") - return - else - throw er - } - - let stats - try { - stats = options.statSync(p) - } catch (er3) { - if (er3.code === "ENOENT") - return - else - throw er - } - - if (stats.isDirectory()) - rmdirSync(p, options, er) - else - options.unlinkSync(p) -} - -const rmdir = (p, options, originalEr, cb) => { - assert(p) - assert(options) - assert(typeof cb === 'function') - - // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) - // if we guessed wrong, and it's not a directory, then - // raise the original error. - options.rmdir(p, er => { - if (er && (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM")) - rmkids(p, options, cb) - else if (er && er.code === "ENOTDIR") - cb(originalEr) - else - cb(er) - }) -} - -const rmkids = (p, options, cb) => { - assert(p) - assert(options) - assert(typeof cb === 'function') - - options.readdir(p, (er, files) => { - if (er) - return cb(er) - let n = files.length - if (n === 0) - return options.rmdir(p, cb) - let errState - files.forEach(f => { - rimraf(path.join(p, f), options, er => { - if (errState) - return - if (er) - return cb(errState = er) - if (--n === 0) - options.rmdir(p, cb) - }) - }) - }) -} - -// this looks simpler, and is strictly *faster*, but will -// tie up the JavaScript thread and fail on excessively -// deep directory trees. -const rimrafSync = (p, options) => { - options = options || {} - defaults(options) - - assert(p, 'rimraf: missing path') - assert.equal(typeof p, 'string', 'rimraf: path should be a string') - assert(options, 'rimraf: missing options') - assert.equal(typeof options, 'object', 'rimraf: options should be object') - - let results - - if (options.disableGlob || !glob.hasMagic(p)) { - results = [p] - } else { - try { - options.lstatSync(p) - results = [p] - } catch (er) { - results = glob.sync(p, options.glob) - } - } - - if (!results.length) - return - - for (let i = 0; i < results.length; i++) { - const p = results[i] - - let st - try { - st = options.lstatSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - - // Windows can EPERM on stat. Life is suffering. - if (er.code === "EPERM" && isWindows) - fixWinEPERMSync(p, options, er) - } - - try { - // sunos lets the root user unlink directories, which is... weird. - if (st && st.isDirectory()) - rmdirSync(p, options, null) - else - options.unlinkSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "EPERM") - return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) - if (er.code !== "EISDIR") - throw er - - rmdirSync(p, options, er) - } - } -} - -const rmdirSync = (p, options, originalEr) => { - assert(p) - assert(options) - - try { - options.rmdirSync(p) - } catch (er) { - if (er.code === "ENOENT") - return - if (er.code === "ENOTDIR") - throw originalEr - if (er.code === "ENOTEMPTY" || er.code === "EEXIST" || er.code === "EPERM") - rmkidsSync(p, options) - } -} - -const rmkidsSync = (p, options) => { - assert(p) - assert(options) - options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) - - // We only end up here once we got ENOTEMPTY at least once, and - // at this point, we are guaranteed to have removed all the kids. - // So, we know that it won't be ENOENT or ENOTDIR or anything else. - // try really hard to delete stuff on windows, because it has a - // PROFOUNDLY annoying habit of not closing handles promptly when - // files are deleted, resulting in spurious ENOTEMPTY errors. - const retries = isWindows ? 100 : 1 - let i = 0 - do { - let threw = true - try { - const ret = options.rmdirSync(p, options) - threw = false - return ret - } finally { - if (++i < retries && threw) - continue - } - } while (true) -} - -module.exports = rimraf -rimraf.sync = rimrafSync - - -/***/ }), - -/***/ "../../node_modules/run-parallel/index.js": -/***/ (function(module, exports) { - -module.exports = runParallel - -function runParallel (tasks, cb) { - var results, pending, keys - var isSync = true - - if (Array.isArray(tasks)) { - results = [] - pending = tasks.length - } else { - keys = Object.keys(tasks) - results = {} - pending = keys.length - } - - function done (err) { - function end () { - if (cb) cb(err, results) - cb = null - } - if (isSync) process.nextTick(end) - else end() - } - - function each (i, err, result) { - results[i] = result - if (--pending === 0 || err) { - done(err) - } - } - - if (!pending) { - // empty - done(null) - } else if (keys) { - // object - keys.forEach(function (key) { - tasks[key](function (err, result) { each(key, err, result) }) - }) - } else { - // array - tasks.forEach(function (task, i) { - task(function (err, result) { each(i, err, result) }) - }) - } - - isSync = false -} - - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/index.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return _internal_Observable__WEBPACK_IMPORTED_MODULE_0__["a"]; }); - -/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["a"]; }); - -/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_2__["a"]; }); - -/* harmony import */ var _internal_observable_dom_animationFrames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrames", function() { return _internal_observable_dom_animationFrames__WEBPACK_IMPORTED_MODULE_3__["a"]; }); - -/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _internal_Subject__WEBPACK_IMPORTED_MODULE_4__["a"]; }); - -/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__["a"]; }); - -/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__["a"]; }); - -/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__["a"]; }); - -/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/asap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["b"]; }); - -/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "async", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["b"]; }); - -/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/queue.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["b"]; }); - -/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["b"]; }); - -/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["b"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["a"]; }); - -/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Scheduler.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__["a"]; }); - -/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__["b"]; }); - -/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__["b"]; }); - -/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Notification.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["b"]; }); - -/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/pipe.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__["a"]; }); - -/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__["a"]; }); - -/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__["a"]; }); - -/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isObservable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__["a"]; }); - -/* harmony import */ var _internal_lastValueFrom__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/lastValueFrom.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lastValueFrom", function() { return _internal_lastValueFrom__WEBPACK_IMPORTED_MODULE_21__["a"]; }); - -/* harmony import */ var _internal_firstValueFrom__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "firstValueFrom", function() { return _internal_firstValueFrom__WEBPACK_IMPORTED_MODULE_22__["a"]; }); - -/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_23__["a"]; }); - -/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_24__["a"]; }); - -/* harmony import */ var _internal_util_NotFoundError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotFoundError", function() { return _internal_util_NotFoundError__WEBPACK_IMPORTED_MODULE_25__["a"]; }); - -/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_26__["a"]; }); - -/* harmony import */ var _internal_util_SequenceError__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SequenceError", function() { return _internal_util_SequenceError__WEBPACK_IMPORTED_MODULE_27__["a"]; }); - -/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__["a"]; }); - -/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_29__["a"]; }); - -/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/bindCallback.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_30__["a"]; }); - -/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/bindNodeCallback.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_31__["a"]; }); - -/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_32__["a"]; }); - -/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/concat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_33__["a"]; }); - -/* harmony import */ var _internal_observable_connectable__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/connectable.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connectable", function() { return _internal_observable_connectable__WEBPACK_IMPORTED_MODULE_34__["a"]; }); - -/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/defer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_35__["a"]; }); - -/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__["b"]; }); - -/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_37__["a"]; }); - -/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "from", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_38__["a"]; }); - -/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_39__["a"]; }); - -/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_40__["a"]; }); - -/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/generate.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_41__["a"]; }); - -/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/iif.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_42__["a"]; }); - -/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/interval.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_43__["a"]; }); - -/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/merge.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_44__["a"]; }); - -/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/never.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "never", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__["b"]; }); - -/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/of.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_46__["a"]; }); - -/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/onErrorResumeNext.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_47__["a"]; }); - -/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/pairs.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_48__["a"]; }); - -/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/partition.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_observable_partition__WEBPACK_IMPORTED_MODULE_49__["a"]; }); - -/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/race.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_50__["a"]; }); - -/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/range.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_51__["a"]; }); - -/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/throwError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_52__["a"]; }); - -/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_53__["a"]; }); - -/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/using.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_54__["a"]; }); - -/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/zip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_55__["a"]; }); - -/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_56__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_36__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_45__["a"]; }); - -/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_57__["a"]; }); - -/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/audit.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_58__["a"]; }); - -/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/auditTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_59__["a"]; }); - -/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_60__["a"]; }); - -/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_61__["a"]; }); - -/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_62__["a"]; }); - -/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_63__["a"]; }); - -/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_64__["a"]; }); - -/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_65__["a"]; }); - -/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_66__["a"]; }); - -/* harmony import */ var _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestAll", function() { return _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_67__["a"]; }); - -/* harmony import */ var _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestWith", function() { return _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_68__["a"]; }); - -/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_69__["a"]; }); - -/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_70__["a"]; }); - -/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_71__["a"]; }); - -/* harmony import */ var _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatWith", function() { return _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_72__["a"]; }); - -/* harmony import */ var _internal_operators_connect__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/connect.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return _internal_operators_connect__WEBPACK_IMPORTED_MODULE_73__["a"]; }); - -/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/count.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_74__["a"]; }); - -/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/debounce.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_75__["a"]; }); - -/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_76__["a"]; }); - -/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_77__["a"]; }); - -/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_78__["a"]; }); - -/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_79__["a"]; }); - -/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_80__["a"]; }); - -/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinct.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_81__["a"]; }); - -/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_82__["a"]; }); - -/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_83__["a"]; }); - -/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/elementAt.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_84__["a"]; }); - -/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/endWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_85__["a"]; }); - -/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/every.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_86__["a"]; }); - -/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaust.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_87__["a"]; }); - -/* harmony import */ var _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustAll", function() { return _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_88__["a"]; }); - -/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_89__["a"]; }); - -/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/expand.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_90__["a"]; }); - -/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_91__["a"]; }); - -/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/finalize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_92__["a"]; }); - -/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/find.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_93__["b"]; }); - -/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/findIndex.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_94__["a"]; }); - -/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/first.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_95__["a"]; }); - -/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/groupBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_96__["a"]; }); - -/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_97__["a"]; }); - -/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_98__["a"]; }); - -/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/last.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_99__["a"]; }); - -/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_100__["a"]; }); - -/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_101__["a"]; }); - -/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/materialize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_102__["a"]; }); - -/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/max.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_103__["a"]; }); - -/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_104__["a"]; }); - -/* harmony import */ var _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/flatMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_105__["a"]; }); - -/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_106__["a"]; }); - -/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_107__["a"]; }); - -/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_108__["a"]; }); - -/* harmony import */ var _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_109__["a"]; }); - -/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/min.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_110__["a"]; }); - -/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_111__["a"]; }); - -/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_112__["a"]; }); - -/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_113__["a"]; }); - -/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/pluck.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_114__["a"]; }); - -/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publish.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_115__["a"]; }); - -/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_116__["a"]; }); - -/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_117__["a"]; }); - -/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_118__["a"]; }); - -/* harmony import */ var _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/raceWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "raceWith", function() { return _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_119__["a"]; }); - -/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_120__["a"]; }); - -/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/repeat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_121__["a"]; }); - -/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_122__["a"]; }); - -/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/retry.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_123__["a"]; }); - -/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_124__["a"]; }); - -/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_125__["a"]; }); - -/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sample.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_126__["a"]; }); - -/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_127__["a"]; }); - -/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/scan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_128__["a"]; }); - -/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_129__["a"]; }); - -/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/share.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_130__["a"]; }); - -/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_131__["a"]; }); - -/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/single.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_132__["a"]; }); - -/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_133__["a"]; }); - -/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_134__["a"]; }); - -/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_135__["a"]; }); - -/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_136__["a"]; }); - -/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/startWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_137__["a"]; }); - -/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_138__["a"]; }); - -/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_139__["a"]; }); - -/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_140__["a"]; }); - -/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_141__["a"]; }); - -/* harmony import */ var _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchScan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchScan", function() { return _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_142__["a"]; }); - -/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_143__["a"]; }); - -/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_144__["a"]; }); - -/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_145__["a"]; }); - -/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_146__["a"]; }); - -/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/tap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_147__["a"]; }); - -/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_148__["b"]; }); - -/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_149__["a"]; }); - -/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_150__["a"]; }); - -/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_151__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_28__["b"]; }); - -/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_152__["a"]; }); - -/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timestamp.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_153__["a"]; }); - -/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/toArray.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_154__["a"]; }); - -/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/window.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_155__["a"]; }); - -/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_156__["a"]; }); - -/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_157__["a"]; }); - -/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_158__["a"]; }); - -/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_159__["a"]; }); - -/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_160__["a"]; }); - -/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zipAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_161__["a"]; }); - -/* harmony import */ var _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zipWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_162__["a"]; }); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//# sourceMappingURL=index.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); - - -var AsyncSubject = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsyncSubject, _super); - function AsyncSubject() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._value = null; - _this._hasValue = false; - _this._isComplete = false; - return _this; - } - AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) { - var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete; - if (hasError) { - subscriber.error(thrownError); - } - else if (isStopped || _isComplete) { - _hasValue && subscriber.next(_value); - subscriber.complete(); - } - }; - AsyncSubject.prototype.next = function (value) { - if (!this.isStopped) { - this._value = value; - this._hasValue = true; - } - }; - AsyncSubject.prototype.complete = function () { - var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete; - if (!_isComplete) { - this._isComplete = true; - _hasValue && _super.prototype.next.call(this, _value); - _super.prototype.complete.call(this); - } - }; - return AsyncSubject; -}(_Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"])); - -//# sourceMappingURL=AsyncSubject.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BehaviorSubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); - - -var BehaviorSubject = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(BehaviorSubject, _super); - function BehaviorSubject(_value) { - var _this = _super.call(this) || this; - _this._value = _value; - return _this; - } - Object.defineProperty(BehaviorSubject.prototype, "value", { - get: function () { - return this.getValue(); - }, - enumerable: false, - configurable: true - }); - BehaviorSubject.prototype._subscribe = function (subscriber) { - var subscription = _super.prototype._subscribe.call(this, subscriber); - !subscription.closed && subscriber.next(this._value); - return subscription; - }; - BehaviorSubject.prototype.getValue = function () { - var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value; - if (hasError) { - throw thrownError; - } - this._throwIfClosed(); - return _value; - }; - BehaviorSubject.prototype.next = function (value) { - _super.prototype.next.call(this, (this._value = value)); - }; - return BehaviorSubject; -}(_Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"])); - -//# sourceMappingURL=BehaviorSubject.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/Notification.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return NotificationKind; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Notification; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return observeNotification; }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/of.js"); -/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/throwError.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - - - -var NotificationKind; -(function (NotificationKind) { - NotificationKind["NEXT"] = "N"; - NotificationKind["ERROR"] = "E"; - NotificationKind["COMPLETE"] = "C"; -})(NotificationKind || (NotificationKind = {})); -var Notification = (function () { - function Notification(kind, value, error) { - this.kind = kind; - this.value = value; - this.error = error; - this.hasValue = kind === 'N'; - } - Notification.prototype.observe = function (observer) { - return observeNotification(this, observer); - }; - Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) { - var _a = this, kind = _a.kind, value = _a.value, error = _a.error; - return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler(); - }; - Notification.prototype.accept = function (nextOrObserver, error, complete) { - var _a; - return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_3__[/* isFunction */ "a"])((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next) - ? this.observe(nextOrObserver) - : this.do(nextOrObserver, error, complete); - }; - Notification.prototype.toObservable = function () { - var _a = this, kind = _a.kind, value = _a.value, error = _a.error; - var result = kind === 'N' - ? - Object(_observable_of__WEBPACK_IMPORTED_MODULE_1__[/* of */ "a"])(value) - : - kind === 'E' - ? - Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_2__[/* throwError */ "a"])(function () { return error; }) - : - kind === 'C' - ? - _observable_empty__WEBPACK_IMPORTED_MODULE_0__[/* EMPTY */ "a"] - : - 0; - if (!result) { - throw new TypeError("Unexpected notification kind " + kind); - } - return result; - }; - Notification.createNext = function (value) { - return new Notification('N', value); - }; - Notification.createError = function (err) { - return new Notification('E', undefined, err); - }; - Notification.createComplete = function () { - return Notification.completeNotification; - }; - Notification.completeNotification = new Notification('C'); - return Notification; -}()); - -function observeNotification(notification, observer) { - var _a, _b, _c; - var _d = notification, kind = _d.kind, value = _d.value, error = _d.error; - if (typeof kind !== 'string') { - throw new TypeError('Invalid notification, missing "kind"'); - } - kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer); -} -//# sourceMappingURL=Notification.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/NotificationFactories.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return COMPLETE_NOTIFICATION; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return errorNotification; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return nextNotification; }); -/* unused harmony export createNotification */ -var COMPLETE_NOTIFICATION = (function () { return createNotification('C', undefined, undefined); })(); -function errorNotification(error) { - return createNotification('E', undefined, error); -} -function nextNotification(value) { - return createNotification('N', value, undefined); -} -function createNotification(kind, value, error) { - return { - kind: kind, - value: value, - error: error, - }; -} -//# sourceMappingURL=NotificationFactories.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/Observable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Observable; }); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js"); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/pipe.js"); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js"); - - - - - - - -var Observable = (function () { - function Observable(subscribe) { - 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 _this = this; - var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new _Subscriber__WEBPACK_IMPORTED_MODULE_0__[/* SafeSubscriber */ "a"](observerOrNext, error, complete); - Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_6__[/* errorContext */ "b"])(function () { - var _a = _this, operator = _a.operator, source = _a.source; - subscriber.add(operator - ? - operator.call(subscriber, source) - : source - ? - _this._subscribe(subscriber) - : - _this._trySubscribe(subscriber)); - }); - return subscriber; - }; - Observable.prototype._trySubscribe = function (sink) { - try { - return this._subscribe(sink); - } - catch (err) { - sink.error(err); - } - }; - Observable.prototype.forEach = function (next, promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function (resolve, reject) { - var subscriber = new _Subscriber__WEBPACK_IMPORTED_MODULE_0__[/* SafeSubscriber */ "a"]({ - next: function (value) { - try { - next(value); - } - catch (err) { - reject(err); - subscriber.unsubscribe(); - } - }, - error: reject, - complete: resolve, - }); - _this.subscribe(subscriber); - }); - }; - Observable.prototype._subscribe = function (subscriber) { - var _a; - return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); - }; - Observable.prototype[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__[/* observable */ "a"]] = function () { - return this; - }; - Observable.prototype.pipe = function () { - var operations = []; - for (var _i = 0; _i < arguments.length; _i++) { - operations[_i] = arguments[_i]; - } - return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__[/* pipeFromArray */ "b"])(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) { - var _a; - return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : _config__WEBPACK_IMPORTED_MODULE_4__[/* config */ "a"].Promise) !== null && _a !== void 0 ? _a : Promise; -} -function isObserver(value) { - return value && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(value.next) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(value.error) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(value.complete); -} -function isSubscriber(value) { - return (value && value instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__[/* Subscriber */ "b"]) || (isObserver(value) && Object(_Subscription__WEBPACK_IMPORTED_MODULE_1__[/* isSubscription */ "c"])(value)); -} -//# sourceMappingURL=Observable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ReplaySubject; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js"); - - - -var ReplaySubject = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(ReplaySubject, _super); - function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) { - if (_bufferSize === void 0) { _bufferSize = Infinity; } - if (_windowTime === void 0) { _windowTime = Infinity; } - if (_timestampProvider === void 0) { _timestampProvider = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_2__[/* dateTimestampProvider */ "a"]; } - var _this = _super.call(this) || this; - _this._bufferSize = _bufferSize; - _this._windowTime = _windowTime; - _this._timestampProvider = _timestampProvider; - _this._buffer = []; - _this._infiniteTimeWindow = true; - _this._infiniteTimeWindow = _windowTime === Infinity; - _this._bufferSize = Math.max(1, _bufferSize); - _this._windowTime = Math.max(1, _windowTime); - return _this; - } - ReplaySubject.prototype.next = function (value) { - var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime; - if (!isStopped) { - _buffer.push(value); - !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime); - } - this._trimBuffer(); - _super.prototype.next.call(this, value); - }; - ReplaySubject.prototype._subscribe = function (subscriber) { - this._throwIfClosed(); - this._trimBuffer(); - var subscription = this._innerSubscribe(subscriber); - var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer; - var copy = _buffer.slice(); - for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) { - subscriber.next(copy[i]); - } - this._checkFinalizedStatuses(subscriber); - return subscription; - }; - ReplaySubject.prototype._trimBuffer = function () { - var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow; - var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize; - _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize); - if (!_infiniteTimeWindow) { - var now = _timestampProvider.now(); - var last = 0; - for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) { - last = i; - } - last && _buffer.splice(0, last + 1); - } - }; - return ReplaySubject; -}(_Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"])); - -//# sourceMappingURL=ReplaySubject.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/Scheduler.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Scheduler; }); -/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js"); - -var Scheduler = (function () { - function Scheduler(schedulerActionCtor, now) { - if (now === void 0) { now = Scheduler.now; } - this.schedulerActionCtor = schedulerActionCtor; - this.now = now; - } - Scheduler.prototype.schedule = function (work, delay, state) { - if (delay === void 0) { delay = 0; } - return new this.schedulerActionCtor(this, work).schedule(state, delay); - }; - Scheduler.now = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__[/* dateTimestampProvider */ "a"].now; - return Scheduler; -}()); - -//# sourceMappingURL=Scheduler.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/Subject.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subject; }); -/* unused harmony export AnonymousSubject */ -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js"); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); -/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js"); - - - - - - -var Subject = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(Subject, _super); - function Subject() { - var _this = _super.call(this) || this; - _this.closed = false; - _this.currentObservers = null; - _this.observers = []; - _this.isStopped = false; - _this.hasError = false; - _this.thrownError = null; - return _this; - } - Subject.prototype.lift = function (operator) { - var subject = new AnonymousSubject(this, this); - subject.operator = operator; - return subject; - }; - Subject.prototype._throwIfClosed = function () { - if (this.closed) { - throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_3__[/* ObjectUnsubscribedError */ "a"](); - } - }; - Subject.prototype.next = function (value) { - var _this = this; - Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__[/* errorContext */ "b"])(function () { - var e_1, _a; - _this._throwIfClosed(); - if (!_this.isStopped) { - if (!_this.currentObservers) { - _this.currentObservers = Array.from(_this.observers); - } - try { - for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) { - var observer = _c.value; - observer.next(value); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_c && !_c.done && (_a = _b.return)) _a.call(_b); - } - finally { if (e_1) throw e_1.error; } - } - } - }); - }; - Subject.prototype.error = function (err) { - var _this = this; - Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__[/* errorContext */ "b"])(function () { - _this._throwIfClosed(); - if (!_this.isStopped) { - _this.hasError = _this.isStopped = true; - _this.thrownError = err; - var observers = _this.observers; - while (observers.length) { - observers.shift().error(err); - } - } - }); - }; - Subject.prototype.complete = function () { - var _this = this; - Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_5__[/* errorContext */ "b"])(function () { - _this._throwIfClosed(); - if (!_this.isStopped) { - _this.isStopped = true; - var observers = _this.observers; - while (observers.length) { - observers.shift().complete(); - } - } - }); - }; - Subject.prototype.unsubscribe = function () { - this.isStopped = this.closed = true; - this.observers = this.currentObservers = null; - }; - Object.defineProperty(Subject.prototype, "observed", { - get: function () { - var _a; - return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; - }, - enumerable: false, - configurable: true - }); - Subject.prototype._trySubscribe = function (subscriber) { - this._throwIfClosed(); - return _super.prototype._trySubscribe.call(this, subscriber); - }; - Subject.prototype._subscribe = function (subscriber) { - this._throwIfClosed(); - this._checkFinalizedStatuses(subscriber); - return this._innerSubscribe(subscriber); - }; - Subject.prototype._innerSubscribe = function (subscriber) { - var _this = this; - var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers; - if (hasError || isStopped) { - return _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* EMPTY_SUBSCRIPTION */ "a"]; - } - this.currentObservers = null; - observers.push(subscriber); - return new _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"](function () { - _this.currentObservers = null; - Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_4__[/* arrRemove */ "a"])(observers, subscriber); - }); - }; - Subject.prototype._checkFinalizedStatuses = function (subscriber) { - var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped; - if (hasError) { - subscriber.error(thrownError); - } - else if (isStopped) { - subscriber.complete(); - } - }; - Subject.prototype.asObservable = function () { - var observable = new _Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"](); - observable.source = this; - return observable; - }; - Subject.create = function (destination, source) { - return new AnonymousSubject(destination, source); - }; - return Subject; -}(_Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"])); - -var AnonymousSubject = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(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 _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); - }; - AnonymousSubject.prototype.error = function (err) { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); - }; - AnonymousSubject.prototype.complete = function () { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); - }; - AnonymousSubject.prototype._subscribe = function (subscriber) { - var _a, _b; - return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* EMPTY_SUBSCRIPTION */ "a"]; - }; - return AnonymousSubject; -}(Subject)); - -//# sourceMappingURL=Subject.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/Subscriber.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Subscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SafeSubscriber; }); -/* unused harmony export EMPTY_OBSERVER */ -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); -/* harmony import */ var _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony import */ var _NotificationFactories__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/NotificationFactories.js"); -/* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js"); -/* harmony import */ var _util_errorContext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js"); - - - - - - - - - -var Subscriber = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(Subscriber, _super); - function Subscriber(destination) { - var _this = _super.call(this) || this; - _this.isStopped = false; - if (destination) { - _this.destination = destination; - if (Object(_Subscription__WEBPACK_IMPORTED_MODULE_2__[/* isSubscription */ "c"])(destination)) { - destination.add(_this); - } - } - else { - _this.destination = EMPTY_OBSERVER; - } - return _this; - } - Subscriber.create = function (next, error, complete) { - return new SafeSubscriber(next, error, complete); - }; - Subscriber.prototype.next = function (value) { - if (this.isStopped) { - handleStoppedNotification(Object(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__[/* nextNotification */ "c"])(value), this); - } - else { - this._next(value); - } - }; - Subscriber.prototype.error = function (err) { - if (this.isStopped) { - handleStoppedNotification(Object(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__[/* errorNotification */ "b"])(err), this); - } - else { - this.isStopped = true; - this._error(err); - } - }; - Subscriber.prototype.complete = function () { - if (this.isStopped) { - handleStoppedNotification(_NotificationFactories__WEBPACK_IMPORTED_MODULE_6__[/* COMPLETE_NOTIFICATION */ "a"], this); - } - else { - this.isStopped = true; - this._complete(); - } - }; - Subscriber.prototype.unsubscribe = function () { - if (!this.closed) { - this.isStopped = true; - _super.prototype.unsubscribe.call(this); - this.destination = null; - } - }; - Subscriber.prototype._next = function (value) { - this.destination.next(value); - }; - Subscriber.prototype._error = function (err) { - try { - this.destination.error(err); - } - finally { - this.unsubscribe(); - } - }; - Subscriber.prototype._complete = function () { - try { - this.destination.complete(); - } - finally { - this.unsubscribe(); - } - }; - return Subscriber; -}(_Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"])); - -var _bind = Function.prototype.bind; -function bind(fn, thisArg) { - return _bind.call(fn, thisArg); -} -var ConsumerObserver = (function () { - function ConsumerObserver(partialObserver) { - this.partialObserver = partialObserver; - } - ConsumerObserver.prototype.next = function (value) { - var partialObserver = this.partialObserver; - if (partialObserver.next) { - try { - partialObserver.next(value); - } - catch (error) { - handleUnhandledError(error); - } - } - }; - ConsumerObserver.prototype.error = function (err) { - var partialObserver = this.partialObserver; - if (partialObserver.error) { - try { - partialObserver.error(err); - } - catch (error) { - handleUnhandledError(error); - } - } - else { - handleUnhandledError(err); - } - }; - ConsumerObserver.prototype.complete = function () { - var partialObserver = this.partialObserver; - if (partialObserver.complete) { - try { - partialObserver.complete(); - } - catch (error) { - handleUnhandledError(error); - } - } - }; - return ConsumerObserver; -}()); -var SafeSubscriber = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(SafeSubscriber, _super); - function SafeSubscriber(observerOrNext, error, complete) { - var _this = _super.call(this) || this; - var partialObserver; - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(observerOrNext) || !observerOrNext) { - partialObserver = { - next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined, - error: error !== null && error !== void 0 ? error : undefined, - complete: complete !== null && complete !== void 0 ? complete : undefined, - }; - } - else { - var context_1; - if (_this && _config__WEBPACK_IMPORTED_MODULE_3__[/* config */ "a"].useDeprecatedNextContext) { - context_1 = Object.create(observerOrNext); - context_1.unsubscribe = function () { return _this.unsubscribe(); }; - partialObserver = { - next: observerOrNext.next && bind(observerOrNext.next, context_1), - error: observerOrNext.error && bind(observerOrNext.error, context_1), - complete: observerOrNext.complete && bind(observerOrNext.complete, context_1), - }; - } - else { - partialObserver = observerOrNext; - } - } - _this.destination = new ConsumerObserver(partialObserver); - return _this; - } - return SafeSubscriber; -}(Subscriber)); - -function handleUnhandledError(error) { - if (_config__WEBPACK_IMPORTED_MODULE_3__[/* config */ "a"].useDeprecatedSynchronousErrorHandling) { - Object(_util_errorContext__WEBPACK_IMPORTED_MODULE_8__[/* captureError */ "a"])(error); - } - else { - Object(_util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_4__[/* reportUnhandledError */ "a"])(error); - } -} -function defaultErrorHandler(err) { - throw err; -} -function handleStoppedNotification(notification, subscriber) { - var onStoppedNotification = _config__WEBPACK_IMPORTED_MODULE_3__[/* config */ "a"].onStoppedNotification; - onStoppedNotification && _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_7__[/* timeoutProvider */ "a"].setTimeout(function () { return onStoppedNotification(notification, subscriber); }); -} -var EMPTY_OBSERVER = { - closed: true, - next: _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"], - error: defaultErrorHandler, - complete: _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"], -}; -//# sourceMappingURL=Subscriber.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/Subscription.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return Subscription; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EMPTY_SUBSCRIPTION; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isSubscription; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js"); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); - - - - -var Subscription = (function () { - function Subscription(initialTeardown) { - this.initialTeardown = initialTeardown; - this.closed = false; - this._parentage = null; - this._finalizers = null; - } - Subscription.prototype.unsubscribe = function () { - var e_1, _a, e_2, _b; - var errors; - if (!this.closed) { - this.closed = true; - var _parentage = this._parentage; - if (_parentage) { - this._parentage = null; - if (Array.isArray(_parentage)) { - try { - for (var _parentage_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) { - var parent_1 = _parentage_1_1.value; - parent_1.remove(this); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1); - } - finally { if (e_1) throw e_1.error; } - } - } - else { - _parentage.remove(this); - } - } - var initialFinalizer = this.initialTeardown; - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(initialFinalizer)) { - try { - initialFinalizer(); - } - catch (e) { - errors = e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__[/* UnsubscriptionError */ "a"] ? e.errors : [e]; - } - } - var _finalizers = this._finalizers; - if (_finalizers) { - this._finalizers = null; - try { - for (var _finalizers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) { - var finalizer = _finalizers_1_1.value; - try { - execFinalizer(finalizer); - } - catch (err) { - errors = errors !== null && errors !== void 0 ? errors : []; - if (err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__[/* UnsubscriptionError */ "a"]) { - errors = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(errors)), Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(err.errors)); - } - else { - errors.push(err); - } - } - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1); - } - finally { if (e_2) throw e_2.error; } - } - } - if (errors) { - throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_2__[/* UnsubscriptionError */ "a"](errors); - } - } - }; - Subscription.prototype.add = function (teardown) { - var _a; - if (teardown && teardown !== this) { - if (this.closed) { - execFinalizer(teardown); - } - else { - if (teardown instanceof Subscription) { - if (teardown.closed || teardown._hasParent(this)) { - return; - } - teardown._addParent(this); - } - (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); - } - } - }; - Subscription.prototype._hasParent = function (parent) { - var _parentage = this._parentage; - return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent)); - }; - Subscription.prototype._addParent = function (parent) { - var _parentage = this._parentage; - this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent; - }; - Subscription.prototype._removeParent = function (parent) { - var _parentage = this._parentage; - if (_parentage === parent) { - this._parentage = null; - } - else if (Array.isArray(_parentage)) { - Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__[/* arrRemove */ "a"])(_parentage, parent); - } - }; - Subscription.prototype.remove = function (teardown) { - var _finalizers = this._finalizers; - _finalizers && Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__[/* arrRemove */ "a"])(_finalizers, teardown); - if (teardown instanceof Subscription) { - teardown._removeParent(this); - } - }; - Subscription.EMPTY = (function () { - var empty = new Subscription(); - empty.closed = true; - return empty; - })(); - return Subscription; -}()); - -var EMPTY_SUBSCRIPTION = Subscription.EMPTY; -function isSubscription(value) { - return (value instanceof Subscription || - (value && 'closed' in value && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(value.remove) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(value.add) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(value.unsubscribe))); -} -function execFinalizer(finalizer) { - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(finalizer)) { - finalizer(); - } - else { - finalizer.unsubscribe(); - } -} -//# sourceMappingURL=Subscription.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/config.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return config; }); -var config = { - onUnhandledError: null, - onStoppedNotification: null, - Promise: undefined, - useDeprecatedSynchronousErrorHandling: false, - useDeprecatedNextContext: false, -}; -//# sourceMappingURL=config.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return firstValueFrom; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); - - -function firstValueFrom(source, config) { - var hasConfig = typeof config === 'object'; - return new Promise(function (resolve, reject) { - var subscriber = new _Subscriber__WEBPACK_IMPORTED_MODULE_1__[/* SafeSubscriber */ "a"]({ - next: function (value) { - resolve(value); - subscriber.unsubscribe(); - }, - error: reject, - complete: function () { - if (hasConfig) { - resolve(config.defaultValue); - } - else { - reject(new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"]()); - } - }, - }); - source.subscribe(subscriber); - }); -} -//# sourceMappingURL=firstValueFrom.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/lastValueFrom.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return lastValueFrom; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); - -function lastValueFrom(source, config) { - var hasConfig = typeof config === 'object'; - return new Promise(function (resolve, reject) { - var _hasValue = false; - var _value; - source.subscribe({ - next: function (value) { - _value = value; - _hasValue = true; - }, - error: reject, - complete: function () { - if (_hasValue) { - resolve(_value); - } - else if (hasConfig) { - resolve(config.defaultValue); - } - else { - reject(new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"]()); - } - }, - }); - }); -} -//# sourceMappingURL=lastValueFrom.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ConnectableObservable; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js"); -/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - - - - - - -var ConnectableObservable = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(ConnectableObservable, _super); - function ConnectableObservable(source, subjectFactory) { - var _this = _super.call(this) || this; - _this.source = source; - _this.subjectFactory = subjectFactory; - _this._subject = null; - _this._refCount = 0; - _this._connection = null; - if (Object(_util_lift__WEBPACK_IMPORTED_MODULE_5__[/* hasLift */ "a"])(source)) { - _this.lift = source.lift; - } - return _this; - } - ConnectableObservable.prototype._subscribe = function (subscriber) { - return this.getSubject().subscribe(subscriber); - }; - ConnectableObservable.prototype.getSubject = function () { - var subject = this._subject; - if (!subject || subject.isStopped) { - this._subject = this.subjectFactory(); - } - return this._subject; - }; - ConnectableObservable.prototype._teardown = function () { - this._refCount = 0; - var _connection = this._connection; - this._subject = this._connection = null; - _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe(); - }; - ConnectableObservable.prototype.connect = function () { - var _this = this; - var connection = this._connection; - if (!connection) { - connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"](); - var subject_1 = this.getSubject(); - connection.add(this.source.subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subject_1, undefined, function () { - _this._teardown(); - subject_1.complete(); - }, function (err) { - _this._teardown(); - subject_1.error(err); - }, function () { return _this._teardown(); }))); - if (connection.closed) { - this._connection = null; - connection = _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"].EMPTY; - } - } - return connection; - }; - ConnectableObservable.prototype.refCount = function () { - return Object(_operators_refCount__WEBPACK_IMPORTED_MODULE_3__[/* refCount */ "a"])()(this); - }; - return ConnectableObservable; -}(_Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"])); - -//# sourceMappingURL=ConnectableObservable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/bindCallback.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bindCallback; }); -/* harmony import */ var _bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js"); - -function bindCallback(callbackFunc, resultSelector, scheduler) { - return Object(_bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__[/* bindCallbackInternals */ "a"])(false, callbackFunc, resultSelector, scheduler); -} -//# sourceMappingURL=bindCallback.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bindCallbackInternals; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js"); - - - - - - - -function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) { - if (resultSelector) { - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__[/* isScheduler */ "a"])(resultSelector)) { - scheduler = resultSelector; - } - else { - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler) - .apply(this, args) - .pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__[/* mapOneOrManyArgs */ "a"])(resultSelector)); - }; - } - } - if (scheduler) { - return function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return bindCallbackInternals(isNodeStyle, callbackFunc) - .apply(this, args) - .pipe(Object(_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_3__[/* subscribeOn */ "a"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_5__[/* observeOn */ "a"])(scheduler)); - }; - } - return function () { - var _this = this; - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_6__[/* AsyncSubject */ "a"](); - var uninitialized = true; - return new _Observable__WEBPACK_IMPORTED_MODULE_2__[/* Observable */ "a"](function (subscriber) { - var subs = subject.subscribe(subscriber); - if (uninitialized) { - uninitialized = false; - var isAsync_1 = false; - var isComplete_1 = false; - callbackFunc.apply(_this, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args)), [ - function () { - var results = []; - for (var _i = 0; _i < arguments.length; _i++) { - results[_i] = arguments[_i]; - } - if (isNodeStyle) { - var err = results.shift(); - if (err != null) { - subject.error(err); - return; - } - } - subject.next(1 < results.length ? results : results[0]); - isComplete_1 = true; - if (isAsync_1) { - subject.complete(); - } - }, - ])); - if (isComplete_1) { - subject.complete(); - } - isAsync_1 = true; - } - return subs; - }); - }; -} -//# sourceMappingURL=bindCallbackInternals.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/bindNodeCallback.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bindNodeCallback; }); -/* harmony import */ var _bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/bindCallbackInternals.js"); - -function bindNodeCallback(callbackFunc, resultSelector, scheduler) { - return Object(_bindCallbackInternals__WEBPACK_IMPORTED_MODULE_0__[/* bindCallbackInternals */ "a"])(true, callbackFunc, resultSelector, scheduler); -} -//# sourceMappingURL=bindNodeCallback.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineLatest; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return combineLatestInit; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js"); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _util_createObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createObject.js"); -/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - - - - - - - - - -function combineLatest() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_5__[/* popScheduler */ "c"])(args); - var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_5__[/* popResultSelector */ "b"])(args); - var _a = Object(_util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__[/* argsArgArrayOrObject */ "a"])(args), observables = _a.args, keys = _a.keys; - if (observables.length === 0) { - return Object(_from__WEBPACK_IMPORTED_MODULE_2__[/* from */ "a"])([], scheduler); - } - var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](combineLatestInit(observables, scheduler, keys - ? - function (values) { return Object(_util_createObject__WEBPACK_IMPORTED_MODULE_6__[/* createObject */ "a"])(keys, values); } - : - _util_identity__WEBPACK_IMPORTED_MODULE_3__[/* identity */ "a"])); - return resultSelector ? result.pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__[/* mapOneOrManyArgs */ "a"])(resultSelector)) : result; -} -function combineLatestInit(observables, scheduler, valueTransform) { - if (valueTransform === void 0) { valueTransform = _util_identity__WEBPACK_IMPORTED_MODULE_3__[/* identity */ "a"]; } - return function (subscriber) { - maybeSchedule(scheduler, function () { - var length = observables.length; - var values = new Array(length); - var active = length; - var remainingFirstValues = length; - var _loop_1 = function (i) { - maybeSchedule(scheduler, function () { - var source = Object(_from__WEBPACK_IMPORTED_MODULE_2__[/* from */ "a"])(observables[i], scheduler); - var hasFirstValue = false; - source.subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_7__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - values[i] = value; - if (!hasFirstValue) { - hasFirstValue = true; - remainingFirstValues--; - } - if (!remainingFirstValues) { - subscriber.next(valueTransform(values.slice())); - } - }, function () { - if (!--active) { - subscriber.complete(); - } - })); - }, subscriber); - }; - for (var i = 0; i < length; i++) { - _loop_1(i); - } - }, subscriber); - }; -} -function maybeSchedule(scheduler, execute, subscription) { - if (scheduler) { - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_8__[/* executeSchedule */ "a"])(subscription, scheduler, execute); - } - else { - execute(); - } -} -//# sourceMappingURL=combineLatest.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/concat.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concat; }); -/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); - - - -function concat() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return Object(_operators_concatAll__WEBPACK_IMPORTED_MODULE_0__[/* concatAll */ "a"])()(Object(_from__WEBPACK_IMPORTED_MODULE_2__[/* from */ "a"])(args, Object(_util_args__WEBPACK_IMPORTED_MODULE_1__[/* popScheduler */ "c"])(args))); -} -//# sourceMappingURL=concat.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/connectable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return connectable; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/defer.js"); - - - -var DEFAULT_CONFIG = { - connector: function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); }, - resetOnDisconnect: true, -}; -function connectable(source, config) { - if (config === void 0) { config = DEFAULT_CONFIG; } - var connection = null; - var connector = config.connector, _a = config.resetOnDisconnect, resetOnDisconnect = _a === void 0 ? true : _a; - var subject = connector(); - var result = new _Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"](function (subscriber) { - return subject.subscribe(subscriber); - }); - result.connect = function () { - if (!connection || connection.closed) { - connection = Object(_defer__WEBPACK_IMPORTED_MODULE_2__[/* defer */ "a"])(function () { return source; }).subscribe(subject); - if (resetOnDisconnect) { - connection.add(function () { return (subject = connector()); }); - } - } - return connection; - }; - return result; -} -//# sourceMappingURL=connectable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/defer.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return defer; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - - -function defer(observableFactory) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(observableFactory()).subscribe(subscriber); - }); -} -//# sourceMappingURL=defer.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return animationFrames; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _scheduler_performanceTimestampProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js"); -/* harmony import */ var _scheduler_animationFrameProvider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js"); - - - - -function animationFrames(timestampProvider) { - return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES; -} -function animationFramesFactory(timestampProvider) { - var schedule = _scheduler_animationFrameProvider__WEBPACK_IMPORTED_MODULE_3__[/* animationFrameProvider */ "a"].schedule; - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"](); - var provider = timestampProvider || _scheduler_performanceTimestampProvider__WEBPACK_IMPORTED_MODULE_2__[/* performanceTimestampProvider */ "a"]; - var start = provider.now(); - var run = function (timestamp) { - var now = provider.now(); - subscriber.next({ - timestamp: timestampProvider ? now : timestamp, - elapsed: now - start, - }); - if (!subscriber.closed) { - subscription.add(schedule(run)); - } - }; - subscription.add(schedule(run)); - return subscription; - }); -} -var DEFAULT_ANIMATION_FRAMES = animationFramesFactory(); -//# sourceMappingURL=animationFrames.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/empty.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EMPTY; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return empty; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); - -var EMPTY = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { return subscriber.complete(); }); -function empty(scheduler) { - return scheduler ? emptyScheduled(scheduler) : EMPTY; -} -function emptyScheduled(scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); }); -} -//# sourceMappingURL=empty.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/forkJoin.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return forkJoin; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js"); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); -/* harmony import */ var _util_createObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createObject.js"); - - - - - - - -function forkJoin() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__[/* popResultSelector */ "b"])(args); - var _a = Object(_util_argsArgArrayOrObject__WEBPACK_IMPORTED_MODULE_1__[/* argsArgArrayOrObject */ "a"])(args), sources = _a.args, keys = _a.keys; - var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - var length = sources.length; - if (!length) { - subscriber.complete(); - return; - } - var values = new Array(length); - var remainingCompletions = length; - var remainingEmissions = length; - var _loop_1 = function (sourceIndex) { - var hasValue = false; - Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(sources[sourceIndex]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - if (!hasValue) { - hasValue = true; - remainingEmissions--; - } - values[sourceIndex] = value; - }, function () { return remainingCompletions--; }, undefined, function () { - if (!remainingCompletions || !hasValue) { - if (!remainingEmissions) { - subscriber.next(keys ? Object(_util_createObject__WEBPACK_IMPORTED_MODULE_6__[/* createObject */ "a"])(keys, values) : values); - } - subscriber.complete(); - } - })); - }; - for (var sourceIndex = 0; sourceIndex < length; sourceIndex++) { - _loop_1(sourceIndex); - } - }); - return resultSelector ? result.pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_5__[/* mapOneOrManyArgs */ "a"])(resultSelector)) : result; -} -//# sourceMappingURL=forkJoin.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/from.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return from; }); -/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js"); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - - -function from(input, scheduler) { - return scheduler ? Object(_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_0__[/* scheduled */ "a"])(input, scheduler) : Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(input); -} -//# sourceMappingURL=from.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return fromEvent; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _operators_mergeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); - - - - - - - -var nodeEventEmitterMethods = ['addListener', 'removeListener']; -var eventTargetMethods = ['addEventListener', 'removeEventListener']; -var jqueryMethods = ['on', 'off']; -function fromEvent(target, eventName, options, resultSelector) { - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(options)) { - resultSelector = options; - options = undefined; - } - if (resultSelector) { - return fromEvent(target, eventName, options).pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_6__[/* mapOneOrManyArgs */ "a"])(resultSelector)); - } - var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(isEventTarget(target) - ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; }) - : - isNodeStyleEventEmitter(target) - ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName)) - : isJQueryStyleEventEmitter(target) - ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName)) - : [], 2), add = _a[0], remove = _a[1]; - if (!add) { - if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_4__[/* isArrayLike */ "a"])(target)) { - return Object(_operators_mergeMap__WEBPACK_IMPORTED_MODULE_3__[/* mergeMap */ "a"])(function (subTarget) { return fromEvent(subTarget, eventName, options); })(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(target)); - } - } - if (!add) { - throw new TypeError('Invalid event target'); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_2__[/* Observable */ "a"](function (subscriber) { - var handler = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return subscriber.next(1 < args.length ? args : args[0]); - }; - add(handler); - return function () { return remove(handler); }; - }); -} -function toCommonHandlerRegistry(target, eventName) { - return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; }; -} -function isNodeStyleEventEmitter(target) { - return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.addListener) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.removeListener); -} -function isJQueryStyleEventEmitter(target) { - return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.on) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.off); -} -function isEventTarget(target) { - return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.addEventListener) && Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_5__[/* isFunction */ "a"])(target.removeEventListener); -} -//# sourceMappingURL=fromEvent.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/fromEventPattern.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return fromEventPattern; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); - - - -function fromEventPattern(addHandler, removeHandler, resultSelector) { - if (resultSelector) { - return fromEventPattern(addHandler, removeHandler).pipe(Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_2__[/* mapOneOrManyArgs */ "a"])(resultSelector)); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - var handler = function () { - var e = []; - for (var _i = 0; _i < arguments.length; _i++) { - e[_i] = arguments[_i]; - } - return subscriber.next(e.length === 1 ? e[0] : e); - }; - var retValue = addHandler(handler); - return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(removeHandler) ? function () { return removeHandler(handler, retValue); } : undefined; - }); -} -//# sourceMappingURL=fromEventPattern.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/fromSubscribable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return fromSubscribable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); - -function fromSubscribable(subscribable) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { return subscribable.subscribe(subscriber); }); -} -//# sourceMappingURL=fromSubscribable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/generate.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return generate; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js"); -/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/defer.js"); -/* harmony import */ var _scheduled_scheduleIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js"); - - - - - -function generate(initialStateOrOptions, condition, iterate, resultSelectorOrScheduler, scheduler) { - var _a, _b; - var resultSelector; - var initialState; - if (arguments.length === 1) { - (_a = initialStateOrOptions, initialState = _a.initialState, condition = _a.condition, iterate = _a.iterate, _b = _a.resultSelector, resultSelector = _b === void 0 ? _util_identity__WEBPACK_IMPORTED_MODULE_1__[/* identity */ "a"] : _b, scheduler = _a.scheduler); - } - else { - initialState = initialStateOrOptions; - if (!resultSelectorOrScheduler || Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__[/* isScheduler */ "a"])(resultSelectorOrScheduler)) { - resultSelector = _util_identity__WEBPACK_IMPORTED_MODULE_1__[/* identity */ "a"]; - scheduler = resultSelectorOrScheduler; - } - else { - resultSelector = resultSelectorOrScheduler; - } - } - function gen() { - var state; - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "f"])(this, function (_a) { - switch (_a.label) { - case 0: - state = initialState; - _a.label = 1; - case 1: - if (!(!condition || condition(state))) return [3, 4]; - return [4, resultSelector(state)]; - case 2: - _a.sent(); - _a.label = 3; - case 3: - state = iterate(state); - return [3, 1]; - case 4: return [2]; - } - }); - } - return Object(_defer__WEBPACK_IMPORTED_MODULE_3__[/* defer */ "a"])((scheduler - ? - function () { return Object(_scheduled_scheduleIterable__WEBPACK_IMPORTED_MODULE_4__[/* scheduleIterable */ "a"])(gen(), scheduler); } - : - gen)); -} -//# sourceMappingURL=generate.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/iif.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return iif; }); -/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/defer.js"); - -function iif(condition, trueResult, falseResult) { - return Object(_defer__WEBPACK_IMPORTED_MODULE_0__[/* defer */ "a"])(function () { return (condition() ? trueResult : falseResult); }); -} -//# sourceMappingURL=iif.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return innerFrom; }); -/* unused harmony export fromInteropObservable */ -/* unused harmony export fromArrayLike */ -/* unused harmony export fromPromise */ -/* unused harmony export fromIterable */ -/* unused harmony export fromAsyncIterable */ -/* unused harmony export fromReadableStreamLike */ -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js"); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js"); -/* harmony import */ var _util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js"); -/* harmony import */ var _util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js"); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js"); -/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js"); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js"); - - - - - - - - - - - - -function innerFrom(input) { - if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"]) { - return input; - } - if (input != null) { - if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__[/* isInteropObservable */ "a"])(input)) { - return fromInteropObservable(input); - } - if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_1__[/* isArrayLike */ "a"])(input)) { - return fromArrayLike(input); - } - if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_2__[/* isPromise */ "a"])(input)) { - return fromPromise(input); - } - if (Object(_util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_5__[/* isAsyncIterable */ "a"])(input)) { - return fromAsyncIterable(input); - } - if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_7__[/* isIterable */ "a"])(input)) { - return fromIterable(input); - } - if (Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_8__[/* isReadableStreamLike */ "a"])(input)) { - return fromReadableStreamLike(input); - } - } - throw Object(_util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_6__[/* createInvalidObservableTypeError */ "a"])(input); -} -function fromInteropObservable(obj) { - return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { - var obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_11__[/* observable */ "a"]](); - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_9__[/* isFunction */ "a"])(obs.subscribe)) { - return obs.subscribe(subscriber); - } - throw new TypeError('Provided object does not correctly implement Symbol.observable'); - }); -} -function fromArrayLike(array) { - return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { - for (var i = 0; i < array.length && !subscriber.closed; i++) { - subscriber.next(array[i]); - } - subscriber.complete(); - }); -} -function fromPromise(promise) { - return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { - promise - .then(function (value) { - if (!subscriber.closed) { - subscriber.next(value); - subscriber.complete(); - } - }, function (err) { return subscriber.error(err); }) - .then(null, _util_reportUnhandledError__WEBPACK_IMPORTED_MODULE_10__[/* reportUnhandledError */ "a"]); - }); -} -function fromIterable(iterable) { - return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { - var e_1, _a; - try { - for (var iterable_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) { - var value = iterable_1_1.value; - subscriber.next(value); - if (subscriber.closed) { - return; - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1); - } - finally { if (e_1) throw e_1.error; } - } - subscriber.complete(); - }); -} -function fromAsyncIterable(asyncIterable) { - return new _Observable__WEBPACK_IMPORTED_MODULE_3__[/* Observable */ "a"](function (subscriber) { - process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); }); - }); -} -function fromReadableStreamLike(readableStream) { - return fromAsyncIterable(Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_8__[/* readableStreamLikeToAsyncGenerator */ "b"])(readableStream)); -} -function process(asyncIterable, subscriber) { - var asyncIterable_1, asyncIterable_1_1; - var e_2, _a; - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __awaiter */ "d"])(this, void 0, void 0, function () { - var value, e_2_1; - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "f"])(this, function (_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 5, 6, 11]); - asyncIterable_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __asyncValues */ "b"])(asyncIterable); - _b.label = 1; - case 1: return [4, asyncIterable_1.next()]; - case 2: - if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4]; - value = asyncIterable_1_1.value; - subscriber.next(value); - if (subscriber.closed) { - return [2]; - } - _b.label = 3; - case 3: return [3, 1]; - case 4: return [3, 11]; - case 5: - e_2_1 = _b.sent(); - e_2 = { error: e_2_1 }; - return [3, 11]; - case 6: - _b.trys.push([6, , 9, 10]); - if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8]; - return [4, _a.call(asyncIterable_1)]; - case 7: - _b.sent(); - _b.label = 8; - case 8: return [3, 10]; - case 9: - if (e_2) throw e_2.error; - return [7]; - case 10: return [7]; - case 11: - subscriber.complete(); - return [2]; - } - }); - }); -} -//# sourceMappingURL=innerFrom.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/interval.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return interval; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); - - -function interval(period, scheduler) { - if (period === void 0) { period = 0; } - if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } - if (period < 0) { - period = 0; - } - return Object(_timer__WEBPACK_IMPORTED_MODULE_1__[/* timer */ "a"])(period, period, scheduler); -} -//# sourceMappingURL=interval.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/merge.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return merge; }); -/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); - - - - - -function merge() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__[/* popScheduler */ "c"])(args); - var concurrent = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__[/* popNumber */ "a"])(args, Infinity); - var sources = args; - return !sources.length - ? - _empty__WEBPACK_IMPORTED_MODULE_2__[/* EMPTY */ "a"] - : sources.length === 1 - ? - Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(sources[0]) - : - Object(_operators_mergeAll__WEBPACK_IMPORTED_MODULE_0__[/* mergeAll */ "a"])(concurrent)(Object(_from__WEBPACK_IMPORTED_MODULE_4__[/* from */ "a"])(sources, scheduler)); -} -//# sourceMappingURL=merge.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/never.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NEVER; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return never; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - - -var NEVER = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](_util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"]); -function never() { - return NEVER; -} -//# sourceMappingURL=never.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/of.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return of; }); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); - - -function of() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_0__[/* popScheduler */ "c"])(args); - return Object(_from__WEBPACK_IMPORTED_MODULE_1__[/* from */ "a"])(args, scheduler); -} -//# sourceMappingURL=of.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/onErrorResumeNext.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return onErrorResumeNext; }); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -/* harmony import */ var _operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js"); -/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); - - - -function onErrorResumeNext() { - var sources = []; - for (var _i = 0; _i < arguments.length; _i++) { - sources[_i] = arguments[_i]; - } - return Object(_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_1__[/* onErrorResumeNext */ "a"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__[/* argsOrArgArray */ "a"])(sources))(_empty__WEBPACK_IMPORTED_MODULE_0__[/* EMPTY */ "a"]); -} -//# sourceMappingURL=onErrorResumeNext.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/pairs.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pairs; }); -/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); - -function pairs(obj, scheduler) { - return Object(_from__WEBPACK_IMPORTED_MODULE_0__[/* from */ "a"])(Object.entries(obj), scheduler); -} -//# sourceMappingURL=pairs.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/partition.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return partition; }); -/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/not.js"); -/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - - - -function partition(source, predicate, thisArg) { - return [Object(_operators_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(predicate, thisArg)(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(source)), Object(_operators_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__[/* not */ "a"])(predicate, thisArg))(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(source))]; -} -//# sourceMappingURL=partition.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/race.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return race; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return raceInit; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); -/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - - -function race() { - var sources = []; - for (var _i = 0; _i < arguments.length; _i++) { - sources[_i] = arguments[_i]; - } - sources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__[/* argsOrArgArray */ "a"])(sources); - return sources.length === 1 ? Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(sources[0]) : new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](raceInit(sources)); -} -function raceInit(sources) { - return function (subscriber) { - var subscriptions = []; - var _loop_1 = function (i) { - subscriptions.push(Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(sources[i]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - if (subscriptions) { - for (var s = 0; s < subscriptions.length; s++) { - s !== i && subscriptions[s].unsubscribe(); - } - subscriptions = null; - } - subscriber.next(value); - }))); - }; - for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) { - _loop_1(i); - } - }; -} -//# sourceMappingURL=race.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/range.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return range; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); - - -function range(start, count, scheduler) { - if (count == null) { - count = start; - start = 0; - } - if (count <= 0) { - return _empty__WEBPACK_IMPORTED_MODULE_1__[/* EMPTY */ "a"]; - } - var end = count + start; - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](scheduler - ? - function (subscriber) { - var n = start; - return scheduler.schedule(function () { - if (n < end) { - subscriber.next(n++); - this.schedule(); - } - else { - subscriber.complete(); - } - }); - } - : - function (subscriber) { - var n = start; - while (n < end && !subscriber.closed) { - subscriber.next(n++); - } - subscriber.complete(); - }); -} -//# sourceMappingURL=range.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/throwError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throwError; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function throwError(errorOrErrorFactory, scheduler) { - var errorFactory = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(errorOrErrorFactory) ? errorOrErrorFactory : function () { return errorOrErrorFactory; }; - var init = function (subscriber) { return subscriber.error(errorFactory()); }; - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](scheduler ? function (subscriber) { return scheduler.schedule(init, 0, subscriber); } : init); -} -//# sourceMappingURL=throwError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/timer.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timer; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js"); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isDate.js"); - - - - -function timer(dueTime, intervalOrScheduler, scheduler) { - if (dueTime === void 0) { dueTime = 0; } - if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__[/* async */ "a"]; } - var intervalDuration = -1; - if (intervalOrScheduler != null) { - if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__[/* isScheduler */ "a"])(intervalOrScheduler)) { - scheduler = intervalOrScheduler; - } - else { - intervalDuration = intervalOrScheduler; - } - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - var due = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_3__[/* isValidDate */ "a"])(dueTime) ? +dueTime - scheduler.now() : dueTime; - if (due < 0) { - due = 0; - } - var n = 0; - return scheduler.schedule(function () { - if (!subscriber.closed) { - subscriber.next(n++); - if (0 <= intervalDuration) { - this.schedule(undefined, intervalDuration); - } - else { - subscriber.complete(); - } - } - }, due); - }); -} -//# sourceMappingURL=timer.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/using.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return using; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); - - - -function using(resourceFactory, observableFactory) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - var resource = resourceFactory(); - var result = observableFactory(resource); - var source = result ? Object(_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(result) : _empty__WEBPACK_IMPORTED_MODULE_2__[/* EMPTY */ "a"]; - source.subscribe(subscriber); - return function () { - if (resource) { - resource.unsubscribe(); - } - }; - }); -} -//# sourceMappingURL=using.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/observable/zip.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return zip; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); -/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -/* harmony import */ var _operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); - - - - - - - -function zip() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popResultSelector */ "b"])(args); - var sources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__[/* argsOrArgArray */ "a"])(args); - return sources.length - ? new _Observable__WEBPACK_IMPORTED_MODULE_1__[/* Observable */ "a"](function (subscriber) { - var buffers = sources.map(function () { return []; }); - var completed = sources.map(function () { return false; }); - subscriber.add(function () { - buffers = completed = null; - }); - var _loop_1 = function (sourceIndex) { - Object(_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(sources[sourceIndex]).subscribe(Object(_operators_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - buffers[sourceIndex].push(value); - if (buffers.every(function (buffer) { return buffer.length; })) { - var result = buffers.map(function (buffer) { return buffer.shift(); }); - subscriber.next(resultSelector ? resultSelector.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(result))) : result); - if (buffers.some(function (buffer, i) { return !buffer.length && completed[i]; })) { - subscriber.complete(); - } - } - }, function () { - completed[sourceIndex] = true; - !buffers[sourceIndex].length && subscriber.complete(); - })); - }; - for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) { - _loop_1(sourceIndex); - } - return function () { - buffers = completed = null; - }; - }) - : _empty__WEBPACK_IMPORTED_MODULE_4__[/* EMPTY */ "a"]; -} -//# sourceMappingURL=zip.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return createOperatorSubscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OperatorSubscriber; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); - - -function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { - return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); -} -var OperatorSubscriber = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(OperatorSubscriber, _super); - function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { - var _this = _super.call(this, destination) || this; - _this.onFinalize = onFinalize; - _this.shouldUnsubscribe = shouldUnsubscribe; - _this._next = onNext - ? function (value) { - try { - onNext(value); - } - catch (err) { - destination.error(err); - } - } - : _super.prototype._next; - _this._error = onError - ? function (err) { - try { - onError(err); - } - catch (err) { - destination.error(err); - } - finally { - this.unsubscribe(); - } - } - : _super.prototype._error; - _this._complete = onComplete - ? function () { - try { - onComplete(); - } - catch (err) { - destination.error(err); - } - finally { - this.unsubscribe(); - } - } - : _super.prototype._complete; - return _this; - } - OperatorSubscriber.prototype.unsubscribe = function () { - var _a; - if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { - var closed_1 = this.closed; - _super.prototype.unsubscribe.call(this); - !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); - } - }; - return OperatorSubscriber; -}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__[/* Subscriber */ "b"])); - -//# sourceMappingURL=OperatorSubscriber.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/audit.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return audit; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function audit(durationSelector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var hasValue = false; - var lastValue = null; - var durationSubscriber = null; - var isComplete = false; - var endDuration = function () { - durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); - durationSubscriber = null; - if (hasValue) { - hasValue = false; - var value = lastValue; - lastValue = null; - subscriber.next(value); - } - isComplete && subscriber.complete(); - }; - var cleanupDuration = function () { - durationSubscriber = null; - isComplete && subscriber.complete(); - }; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - hasValue = true; - lastValue = value; - if (!durationSubscriber) { - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(durationSelector(value)).subscribe((durationSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, endDuration, cleanupDuration))); - } - }, function () { - isComplete = true; - (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete(); - })); - }); -} -//# sourceMappingURL=audit.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/auditTime.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return auditTime; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/audit.js"); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); - - - -function auditTime(duration, scheduler) { - if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } - return Object(_audit__WEBPACK_IMPORTED_MODULE_1__[/* audit */ "a"])(function () { return Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__[/* timer */ "a"])(duration, scheduler); }); -} -//# sourceMappingURL=auditTime.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return buffer; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function buffer(closingNotifier) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var currentBuffer = []; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return currentBuffer.push(value); }, function () { - subscriber.next(currentBuffer); - subscriber.complete(); - })); - closingNotifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - var b = currentBuffer; - currentBuffer = []; - subscriber.next(b); - }, _util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"])); - return function () { - currentBuffer = null; - }; - }); -} -//# sourceMappingURL=buffer.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bufferCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); - - - - -function bufferCount(bufferSize, startBufferEvery) { - if (startBufferEvery === void 0) { startBufferEvery = null; } - startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize; - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var buffers = []; - var count = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var e_1, _a, e_2, _b; - var toEmit = null; - if (count++ % startBufferEvery === 0) { - buffers.push([]); - } - try { - for (var buffers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) { - var buffer = buffers_1_1.value; - buffer.push(value); - if (bufferSize <= buffer.length) { - toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : []; - toEmit.push(buffer); - } - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1); - } - finally { if (e_1) throw e_1.error; } - } - if (toEmit) { - try { - for (var toEmit_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(toEmit), toEmit_1_1 = toEmit_1.next(); !toEmit_1_1.done; toEmit_1_1 = toEmit_1.next()) { - var buffer = toEmit_1_1.value; - Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__[/* arrRemove */ "a"])(buffers, buffer); - subscriber.next(buffer); - } - } - catch (e_2_1) { e_2 = { error: e_2_1 }; } - finally { - try { - if (toEmit_1_1 && !toEmit_1_1.done && (_b = toEmit_1.return)) _b.call(toEmit_1); - } - finally { if (e_2) throw e_2.error; } - } - } - }, function () { - var e_3, _a; - try { - for (var buffers_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(buffers), buffers_2_1 = buffers_2.next(); !buffers_2_1.done; buffers_2_1 = buffers_2.next()) { - var buffer = buffers_2_1.value; - subscriber.next(buffer); - } - } - catch (e_3_1) { e_3 = { error: e_3_1 }; } - finally { - try { - if (buffers_2_1 && !buffers_2_1.done && (_a = buffers_2.return)) _a.call(buffers_2); - } - finally { if (e_3) throw e_3.error; } - } - subscriber.complete(); - }, undefined, function () { - buffers = null; - })); - }); -} -//# sourceMappingURL=bufferCount.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bufferTime; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - - - - - - - - -function bufferTime(bufferTimeSpan) { - var _a, _b; - var otherArgs = []; - for (var _i = 1; _i < arguments.length; _i++) { - otherArgs[_i - 1] = arguments[_i]; - } - var scheduler = (_a = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popScheduler */ "c"])(otherArgs)) !== null && _a !== void 0 ? _a : _scheduler_async__WEBPACK_IMPORTED_MODULE_5__[/* asyncScheduler */ "b"]; - var bufferCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null; - var maxBufferSize = otherArgs[1] || Infinity; - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - var bufferRecords = []; - var restartOnEmit = false; - var emit = function (record) { - var buffer = record.buffer, subs = record.subs; - subs.unsubscribe(); - Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_4__[/* arrRemove */ "a"])(bufferRecords, record); - subscriber.next(buffer); - restartOnEmit && startBuffer(); - }; - var startBuffer = function () { - if (bufferRecords) { - var subs = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"](); - subscriber.add(subs); - var buffer = []; - var record_1 = { - buffer: buffer, - subs: subs, - }; - bufferRecords.push(record_1); - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__[/* executeSchedule */ "a"])(subs, scheduler, function () { return emit(record_1); }, bufferTimeSpan); - } - }; - if (bufferCreationInterval !== null && bufferCreationInterval >= 0) { - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__[/* executeSchedule */ "a"])(subscriber, scheduler, startBuffer, bufferCreationInterval, true); - } - else { - restartOnEmit = true; - } - startBuffer(); - var bufferTimeSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var e_1, _a; - var recordsCopy = bufferRecords.slice(); - try { - for (var recordsCopy_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(recordsCopy), recordsCopy_1_1 = recordsCopy_1.next(); !recordsCopy_1_1.done; recordsCopy_1_1 = recordsCopy_1.next()) { - var record = recordsCopy_1_1.value; - var buffer = record.buffer; - buffer.push(value); - maxBufferSize <= buffer.length && emit(record); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (recordsCopy_1_1 && !recordsCopy_1_1.done && (_a = recordsCopy_1.return)) _a.call(recordsCopy_1); - } - finally { if (e_1) throw e_1.error; } - } - }, function () { - while (bufferRecords === null || bufferRecords === void 0 ? void 0 : bufferRecords.length) { - subscriber.next(bufferRecords.shift().buffer); - } - bufferTimeSubscriber === null || bufferTimeSubscriber === void 0 ? void 0 : bufferTimeSubscriber.unsubscribe(); - subscriber.complete(); - subscriber.unsubscribe(); - }, undefined, function () { return (bufferRecords = null); }); - source.subscribe(bufferTimeSubscriber); - }); -} -//# sourceMappingURL=bufferTime.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bufferToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); - - - - - - - -function bufferToggle(openings, closingSelector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - var buffers = []; - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(openings).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (openValue) { - var buffer = []; - buffers.push(buffer); - var closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"](); - var emitBuffer = function () { - Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_6__[/* arrRemove */ "a"])(buffers, buffer); - subscriber.next(buffer); - closingSubscription.unsubscribe(); - }; - closingSubscription.add(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(closingSelector(openValue)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, emitBuffer, _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"]))); - }, _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"])); - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var e_1, _a; - try { - for (var buffers_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(buffers), buffers_1_1 = buffers_1.next(); !buffers_1_1.done; buffers_1_1 = buffers_1.next()) { - var buffer = buffers_1_1.value; - buffer.push(value); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (buffers_1_1 && !buffers_1_1.done && (_a = buffers_1.return)) _a.call(buffers_1); - } - finally { if (e_1) throw e_1.error; } - } - }, function () { - while (buffers.length > 0) { - subscriber.next(buffers.shift()); - } - subscriber.complete(); - })); - }); -} -//# sourceMappingURL=bufferToggle.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return bufferWhen; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - - - - -function bufferWhen(closingSelector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var buffer = null; - var closingSubscriber = null; - var openBuffer = function () { - closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); - var b = buffer; - buffer = []; - b && subscriber.next(b); - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(closingSelector()).subscribe((closingSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, openBuffer, _util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"]))); - }; - openBuffer(); - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return buffer === null || buffer === void 0 ? void 0 : buffer.push(value); }, function () { - buffer && subscriber.next(buffer); - subscriber.complete(); - }, undefined, function () { return (buffer = closingSubscriber = null); })); - }); -} -//# sourceMappingURL=bufferWhen.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return catchError; }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - - - -function catchError(selector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - var innerSub = null; - var syncUnsub = false; - var handledResult; - innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, undefined, function (err) { - handledResult = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(selector(err, catchError(selector)(source))); - if (innerSub) { - innerSub.unsubscribe(); - innerSub = null; - handledResult.subscribe(subscriber); - } - else { - syncUnsub = true; - } - })); - if (syncUnsub) { - innerSub.unsubscribe(); - innerSub = null; - handledResult.subscribe(subscriber); - } - }); -} -//# sourceMappingURL=catchError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/combineAll.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineAll; }); -/* harmony import */ var _combineLatestAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js"); - -var combineAll = _combineLatestAll__WEBPACK_IMPORTED_MODULE_0__[/* combineLatestAll */ "a"]; -//# sourceMappingURL=combineAll.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineLatest; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/pipe.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); - - - - - - - -function combineLatest() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var resultSelector = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popResultSelector */ "b"])(args); - return resultSelector - ? Object(_util_pipe__WEBPACK_IMPORTED_MODULE_5__[/* pipe */ "a"])(combineLatest.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))), Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_4__[/* mapOneOrManyArgs */ "a"])(resultSelector)) - : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - Object(_observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__[/* combineLatestInit */ "b"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__[/* argsOrArgArray */ "a"])(args))))(subscriber); - }); -} -//# sourceMappingURL=combineLatest.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineLatestAll; }); -/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js"); -/* harmony import */ var _joinAllInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js"); - - -function combineLatestAll(project) { - return Object(_joinAllInternals__WEBPACK_IMPORTED_MODULE_1__[/* joinAllInternals */ "a"])(_observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__[/* combineLatest */ "a"], project); -} -//# sourceMappingURL=combineLatestAll.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return combineLatestWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js"); - - -function combineLatestWith() { - var otherSources = []; - for (var _i = 0; _i < arguments.length; _i++) { - otherSources[_i] = arguments[_i]; - } - return _combineLatest__WEBPACK_IMPORTED_MODULE_1__[/* combineLatest */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherSources))); -} -//# sourceMappingURL=combineLatestWith.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concat.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concat; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _concatAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); - - - - - -function concat() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_3__[/* popScheduler */ "c"])(args); - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - Object(_concatAll__WEBPACK_IMPORTED_MODULE_2__[/* concatAll */ "a"])()(Object(_observable_from__WEBPACK_IMPORTED_MODULE_4__[/* from */ "a"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args)), scheduler)).subscribe(subscriber); - }); -} -//# sourceMappingURL=concat.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concatAll; }); -/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); - -function concatAll() { - return Object(_mergeAll__WEBPACK_IMPORTED_MODULE_0__[/* mergeAll */ "a"])(1); -} -//# sourceMappingURL=concatAll.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concatMap; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function concatMap(project, resultSelector) { - return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(resultSelector) ? Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(project, resultSelector, 1) : Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(project, 1); -} -//# sourceMappingURL=concatMap.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concatMapTo; }); -/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function concatMapTo(innerObservable, resultSelector) { - return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(resultSelector) ? Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__[/* concatMap */ "a"])(function () { return innerObservable; }, resultSelector) : Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__[/* concatMap */ "a"])(function () { return innerObservable; }); -} -//# sourceMappingURL=concatMapTo.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/concatWith.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return concatWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concat.js"); - - -function concatWith() { - var otherSources = []; - for (var _i = 0; _i < arguments.length; _i++) { - otherSources[_i] = arguments[_i]; - } - return _concat__WEBPACK_IMPORTED_MODULE_1__[/* concat */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherSources))); -} -//# sourceMappingURL=concatWith.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/connect.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return connect; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _observable_fromSubscribable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/fromSubscribable.js"); - - - - -var DEFAULT_CONFIG = { - connector: function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); }, -}; -function connect(selector, config) { - if (config === void 0) { config = DEFAULT_CONFIG; } - var connector = config.connector; - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - var subject = connector(); - Object(_observable_from__WEBPACK_IMPORTED_MODULE_1__[/* from */ "a"])(selector(Object(_observable_fromSubscribable__WEBPACK_IMPORTED_MODULE_3__[/* fromSubscribable */ "a"])(subject))).subscribe(subscriber); - subscriber.add(source.subscribe(subject)); - }); -} -//# sourceMappingURL=connect.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/count.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return count; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); - -function count(predicate) { - return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[/* reduce */ "a"])(function (total, value, i) { return (!predicate || predicate(value, i) ? total + 1 : total); }, 0); -} -//# sourceMappingURL=count.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/debounce.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return debounce; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - - - - -function debounce(durationSelector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var hasValue = false; - var lastValue = null; - var durationSubscriber = null; - var emit = function () { - durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); - durationSubscriber = null; - if (hasValue) { - hasValue = false; - var value = lastValue; - lastValue = null; - subscriber.next(value); - } - }; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); - hasValue = true; - lastValue = value; - durationSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, emit, _util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"]); - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(durationSelector(value)).subscribe(durationSubscriber); - }, function () { - emit(); - subscriber.complete(); - }, undefined, function () { - lastValue = durationSubscriber = null; - })); - }); -} -//# sourceMappingURL=debounce.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return debounceTime; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function debounceTime(dueTime, scheduler) { - if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var activeTask = null; - var lastValue = null; - var lastTime = null; - var emit = function () { - if (activeTask) { - activeTask.unsubscribe(); - activeTask = null; - var value = lastValue; - lastValue = null; - subscriber.next(value); - } - }; - function emitWhenIdle() { - var targetTime = lastTime + dueTime; - var now = scheduler.now(); - if (now < targetTime) { - activeTask = this.schedule(undefined, targetTime - now); - subscriber.add(activeTask); - return; - } - emit(); - } - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - lastValue = value; - lastTime = scheduler.now(); - if (!activeTask) { - activeTask = scheduler.schedule(emitWhenIdle, dueTime); - subscriber.add(activeTask); - } - }, function () { - emit(); - subscriber.complete(); - }, undefined, function () { - lastValue = activeTask = null; - })); - }); -} -//# sourceMappingURL=debounceTime.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return defaultIfEmpty; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function defaultIfEmpty(defaultValue) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var hasValue = false; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - hasValue = true; - subscriber.next(value); - }, function () { - if (!hasValue) { - subscriber.next(defaultValue); - } - subscriber.complete(); - })); - }); -} -//# sourceMappingURL=defaultIfEmpty.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/delay.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return delay; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _delayWhen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js"); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); - - - -function delay(due, scheduler) { - if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } - var duration = Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__[/* timer */ "a"])(due, scheduler); - return Object(_delayWhen__WEBPACK_IMPORTED_MODULE_1__[/* delayWhen */ "a"])(function () { return duration; }); -} -//# sourceMappingURL=delay.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return delayWhen; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/concat.js"); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); -/* harmony import */ var _ignoreElements__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js"); -/* harmony import */ var _mapTo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js"); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); - - - - - -function delayWhen(delayDurationSelector, subscriptionDelay) { - if (subscriptionDelay) { - return function (source) { - return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__[/* concat */ "a"])(subscriptionDelay.pipe(Object(_take__WEBPACK_IMPORTED_MODULE_1__[/* take */ "a"])(1), Object(_ignoreElements__WEBPACK_IMPORTED_MODULE_2__[/* ignoreElements */ "a"])()), source.pipe(delayWhen(delayDurationSelector))); - }; - } - return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_4__[/* mergeMap */ "a"])(function (value, index) { return delayDurationSelector(value, index).pipe(Object(_take__WEBPACK_IMPORTED_MODULE_1__[/* take */ "a"])(1), Object(_mapTo__WEBPACK_IMPORTED_MODULE_3__[/* mapTo */ "a"])(value)); }); -} -//# sourceMappingURL=delayWhen.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return dematerialize; }); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Notification.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function dematerialize() { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (notification) { return Object(_Notification__WEBPACK_IMPORTED_MODULE_0__[/* observeNotification */ "c"])(notification, subscriber); })); - }); -} -//# sourceMappingURL=dematerialize.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/distinct.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return distinct; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - - - -function distinct(keySelector, flushes) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var distinctKeys = new Set(); - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var key = keySelector ? keySelector(value) : value; - if (!distinctKeys.has(key)) { - distinctKeys.add(key); - subscriber.next(value); - } - })); - flushes === null || flushes === void 0 ? void 0 : flushes.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { return distinctKeys.clear(); }, _util_noop__WEBPACK_IMPORTED_MODULE_2__[/* noop */ "a"])); - }); -} -//# sourceMappingURL=distinct.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return distinctUntilChanged; }); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function distinctUntilChanged(comparator, keySelector) { - if (keySelector === void 0) { keySelector = _util_identity__WEBPACK_IMPORTED_MODULE_0__[/* identity */ "a"]; } - comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare; - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var previousKey; - var first = true; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var currentKey = keySelector(value); - if (first || !comparator(previousKey, currentKey)) { - first = false; - previousKey = currentKey; - subscriber.next(value); - } - })); - }); -} -function defaultCompare(a, b) { - return a === b; -} -//# sourceMappingURL=distinctUntilChanged.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return distinctUntilKeyChanged; }); -/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js"); - -function distinctUntilKeyChanged(key, compare) { - return Object(_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__[/* distinctUntilChanged */ "a"])(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; }); -} -//# sourceMappingURL=distinctUntilKeyChanged.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/elementAt.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return elementAt; }); -/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js"); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); - - - - - -function elementAt(index, defaultValue) { - if (index < 0) { - throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__[/* ArgumentOutOfRangeError */ "a"](); - } - var hasDefaultValue = arguments.length >= 2; - return function (source) { - return source.pipe(Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(function (v, i) { return i === index; }), Object(_take__WEBPACK_IMPORTED_MODULE_4__[/* take */ "a"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__[/* defaultIfEmpty */ "a"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__[/* throwIfEmpty */ "a"])(function () { return new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__[/* ArgumentOutOfRangeError */ "a"](); })); - }; -} -//# sourceMappingURL=elementAt.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/endWith.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return endWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/concat.js"); -/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/of.js"); - - - -function endWith() { - var values = []; - for (var _i = 0; _i < arguments.length; _i++) { - values[_i] = arguments[_i]; - } - return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_1__[/* concat */ "a"])(source, _observable_of__WEBPACK_IMPORTED_MODULE_2__[/* of */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(values)))); }; -} -//# sourceMappingURL=endWith.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/every.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return every; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function every(predicate, thisArg) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var index = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - if (!predicate.call(thisArg, value, index++, source)) { - subscriber.next(false); - subscriber.complete(); - } - }, function () { - subscriber.next(true); - subscriber.complete(); - })); - }); -} -//# sourceMappingURL=every.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/exhaust.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return exhaust; }); -/* harmony import */ var _exhaustAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js"); - -var exhaust = _exhaustAll__WEBPACK_IMPORTED_MODULE_0__[/* exhaustAll */ "a"]; -//# sourceMappingURL=exhaust.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return exhaustAll; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function exhaustAll() { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var isComplete = false; - var innerSub = null; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (inner) { - if (!innerSub) { - innerSub = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(inner).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, function () { - innerSub = null; - isComplete && subscriber.complete(); - })); - } - }, function () { - isComplete = true; - !innerSub && subscriber.complete(); - })); - }); -} -//# sourceMappingURL=exhaustAll.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return exhaustMap; }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - - -function exhaustMap(project, resultSelector) { - if (resultSelector) { - return function (source) { - return source.pipe(exhaustMap(function (a, i) { return Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_0__[/* map */ "a"])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); - }; - } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - var index = 0; - var innerSub = null; - var isComplete = false; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (outerValue) { - if (!innerSub) { - innerSub = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, function () { - innerSub = null; - isComplete && subscriber.complete(); - }); - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(project(outerValue, index++)).subscribe(innerSub); - } - }, function () { - isComplete = true; - !innerSub && subscriber.complete(); - })); - }); -} -//# sourceMappingURL=exhaustMap.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/expand.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return expand; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js"); - - -function expand(project, concurrent, scheduler) { - if (concurrent === void 0) { concurrent = Infinity; } - concurrent = (concurrent || 0) < 1 ? Infinity : concurrent; - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_1__[/* mergeInternals */ "a"])(source, subscriber, project, concurrent, undefined, true, scheduler); - }); -} -//# sourceMappingURL=expand.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/filter.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return filter; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function filter(predicate, thisArg) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var index = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); })); - }); -} -//# sourceMappingURL=filter.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/finalize.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return finalize; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - -function finalize(callback) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - try { - source.subscribe(subscriber); - } - finally { - subscriber.add(callback); - } - }); -} -//# sourceMappingURL=finalize.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/find.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return find; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createFind; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function find(predicate, thisArg) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(createFind(predicate, thisArg, 'value')); -} -function createFind(predicate, thisArg, emit) { - var findIndex = emit === 'index'; - return function (source, subscriber) { - var index = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var i = index++; - if (predicate.call(thisArg, value, i, source)) { - subscriber.next(findIndex ? i : value); - subscriber.complete(); - } - }, function () { - subscriber.next(findIndex ? -1 : undefined); - subscriber.complete(); - })); - }; -} -//# sourceMappingURL=find.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/findIndex.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return findIndex; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/find.js"); - - -function findIndex(predicate, thisArg) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(Object(_find__WEBPACK_IMPORTED_MODULE_1__[/* createFind */ "a"])(predicate, thisArg, 'index')); -} -//# sourceMappingURL=findIndex.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/first.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return first; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); -/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - - - - - - -function first(predicate, defaultValue) { - var hasDefaultValue = arguments.length >= 2; - return function (source) { - return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__[/* identity */ "a"], Object(_take__WEBPACK_IMPORTED_MODULE_2__[/* take */ "a"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__[/* defaultIfEmpty */ "a"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__[/* throwIfEmpty */ "a"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"](); })); - }; -} -//# sourceMappingURL=first.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/flatMap.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return flatMap; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); - -var flatMap = _mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"]; -//# sourceMappingURL=flatMap.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/groupBy.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return groupBy; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - - - -function groupBy(keySelector, elementOrOptions, duration, connector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__[/* operate */ "b"])(function (source, subscriber) { - var element; - if (!elementOrOptions || typeof elementOrOptions === 'function') { - element = elementOrOptions; - } - else { - (duration = elementOrOptions.duration, element = elementOrOptions.element, connector = elementOrOptions.connector); - } - var groups = new Map(); - var notify = function (cb) { - groups.forEach(cb); - cb(subscriber); - }; - var handleError = function (err) { return notify(function (consumer) { return consumer.error(err); }); }; - var activeGroups = 0; - var teardownAttempted = false; - var groupBySourceSubscriber = new _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* OperatorSubscriber */ "a"](subscriber, function (value) { - try { - var key_1 = keySelector(value); - var group_1 = groups.get(key_1); - if (!group_1) { - groups.set(key_1, (group_1 = connector ? connector() : new _Subject__WEBPACK_IMPORTED_MODULE_2__[/* Subject */ "a"]())); - var grouped = createGroupedObservable(key_1, group_1); - subscriber.next(grouped); - if (duration) { - var durationSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(group_1, function () { - group_1.complete(); - durationSubscriber_1 === null || durationSubscriber_1 === void 0 ? void 0 : durationSubscriber_1.unsubscribe(); - }, undefined, undefined, function () { return groups.delete(key_1); }); - groupBySourceSubscriber.add(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(duration(grouped)).subscribe(durationSubscriber_1)); - } - } - group_1.next(element ? element(value) : value); - } - catch (err) { - handleError(err); - } - }, function () { return notify(function (consumer) { return consumer.complete(); }); }, handleError, function () { return groups.clear(); }, function () { - teardownAttempted = true; - return activeGroups === 0; - }); - source.subscribe(groupBySourceSubscriber); - function createGroupedObservable(key, groupSubject) { - var result = new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (groupSubscriber) { - activeGroups++; - var innerSub = groupSubject.subscribe(groupSubscriber); - return function () { - innerSub.unsubscribe(); - --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe(); - }; - }); - result.key = key; - return result; - } - }); -} -//# sourceMappingURL=groupBy.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ignoreElements; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - - - -function ignoreElements() { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, _util_noop__WEBPACK_IMPORTED_MODULE_2__[/* noop */ "a"])); - }); -} -//# sourceMappingURL=ignoreElements.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isEmpty; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function isEmpty() { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - subscriber.next(false); - subscriber.complete(); - }, function () { - subscriber.next(true); - subscriber.complete(); - })); - }); -} -//# sourceMappingURL=isEmpty.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return joinAllInternals; }); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -/* harmony import */ var _util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js"); -/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/pipe.js"); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); -/* harmony import */ var _toArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/toArray.js"); - - - - - -function joinAllInternals(joinFn, project) { - return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_2__[/* pipe */ "a"])(Object(_toArray__WEBPACK_IMPORTED_MODULE_4__[/* toArray */ "a"])(), Object(_mergeMap__WEBPACK_IMPORTED_MODULE_3__[/* mergeMap */ "a"])(function (sources) { return joinFn(sources); }), project ? Object(_util_mapOneOrManyArgs__WEBPACK_IMPORTED_MODULE_1__[/* mapOneOrManyArgs */ "a"])(project) : _util_identity__WEBPACK_IMPORTED_MODULE_0__[/* identity */ "a"]); -} -//# sourceMappingURL=joinAllInternals.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/last.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return last; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); -/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeLast.js"); -/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); -/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - - - - - - -function last(predicate, defaultValue) { - var hasDefaultValue = arguments.length >= 2; - return function (source) { - return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__[/* identity */ "a"], Object(_takeLast__WEBPACK_IMPORTED_MODULE_2__[/* takeLast */ "a"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__[/* defaultIfEmpty */ "a"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__[/* throwIfEmpty */ "a"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"](); })); - }; -} -//# sourceMappingURL=last.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/map.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return map; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function map(project, thisArg) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var index = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - subscriber.next(project.call(thisArg, value, index++)); - })); - }); -} -//# sourceMappingURL=map.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mapTo; }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); - -function mapTo(value) { - return Object(_map__WEBPACK_IMPORTED_MODULE_0__[/* map */ "a"])(function () { return value; }); -} -//# sourceMappingURL=mapTo.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/materialize.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return materialize; }); -/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Notification.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function materialize() { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__[/* Notification */ "a"].createNext(value)); - }, function () { - subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__[/* Notification */ "a"].createComplete()); - subscriber.complete(); - }, function (err) { - subscriber.next(_Notification__WEBPACK_IMPORTED_MODULE_0__[/* Notification */ "a"].createError(err)); - subscriber.complete(); - })); - }); -} -//# sourceMappingURL=materialize.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/max.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return max; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function max(comparer) { - return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[/* reduce */ "a"])(Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(comparer) ? function (x, y) { return (comparer(x, y) > 0 ? x : y); } : function (x, y) { return (x > y ? x : y); }); -} -//# sourceMappingURL=max.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/merge.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return merge; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); -/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); - - - - - - -function merge() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_4__[/* popScheduler */ "c"])(args); - var concurrent = Object(_util_args__WEBPACK_IMPORTED_MODULE_4__[/* popNumber */ "a"])(args, Infinity); - args = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_2__[/* argsOrArgArray */ "a"])(args); - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - Object(_mergeAll__WEBPACK_IMPORTED_MODULE_3__[/* mergeAll */ "a"])(concurrent)(Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__[/* from */ "a"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args)), scheduler)).subscribe(subscriber); - }); -} -//# sourceMappingURL=merge.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeAll; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - - -function mergeAll(concurrent) { - if (concurrent === void 0) { concurrent = Infinity; } - return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__[/* identity */ "a"], concurrent); -} -//# sourceMappingURL=mergeAll.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeInternals; }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) { - var buffer = []; - var active = 0; - var index = 0; - var isComplete = false; - var checkComplete = function () { - if (isComplete && !buffer.length && !active) { - subscriber.complete(); - } - }; - var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); }; - var doInnerSub = function (value) { - expand && subscriber.next(value); - active++; - var innerComplete = false; - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(project(value, index++)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (innerValue) { - onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue); - if (expand) { - outerNext(innerValue); - } - else { - subscriber.next(innerValue); - } - }, function () { - innerComplete = true; - }, undefined, function () { - if (innerComplete) { - try { - active--; - var _loop_1 = function () { - var bufferedValue = buffer.shift(); - if (innerSubScheduler) { - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__[/* executeSchedule */ "a"])(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); }); - } - else { - doInnerSub(bufferedValue); - } - }; - while (buffer.length && active < concurrent) { - _loop_1(); - } - checkComplete(); - } - catch (err) { - subscriber.error(err); - } - } - })); - }; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, outerNext, function () { - isComplete = true; - checkComplete(); - })); - return function () { - additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer(); - }; -} -//# sourceMappingURL=mergeInternals.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeMap; }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - - - - -function mergeMap(project, resultSelector, concurrent) { - if (concurrent === void 0) { concurrent = Infinity; } - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_4__[/* isFunction */ "a"])(resultSelector)) { - return mergeMap(function (a, i) { return Object(_map__WEBPACK_IMPORTED_MODULE_0__[/* map */ "a"])(function (b, ii) { return resultSelector(a, b, i, ii); })(Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_1__[/* innerFrom */ "a"])(project(a, i))); }, concurrent); - } - else if (typeof resultSelector === 'number') { - concurrent = resultSelector; - } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_3__[/* mergeInternals */ "a"])(source, subscriber, project, concurrent); }); -} -//# sourceMappingURL=mergeMap.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeMapTo; }); -/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function mergeMapTo(innerObservable, resultSelector, concurrent) { - if (concurrent === void 0) { concurrent = Infinity; } - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(resultSelector)) { - return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(function () { return innerObservable; }, resultSelector, concurrent); - } - if (typeof resultSelector === 'number') { - concurrent = resultSelector; - } - return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__[/* mergeMap */ "a"])(function () { return innerObservable; }, concurrent); -} -//# sourceMappingURL=mergeMapTo.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeScan; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _mergeInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js"); - - -function mergeScan(accumulator, seed, concurrent) { - if (concurrent === void 0) { concurrent = Infinity; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var state = seed; - return Object(_mergeInternals__WEBPACK_IMPORTED_MODULE_1__[/* mergeInternals */ "a"])(source, subscriber, function (value, index) { return accumulator(state, value, index); }, concurrent, function (value) { - state = value; - }, false, undefined, function () { return (state = null); }); - }); -} -//# sourceMappingURL=mergeScan.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mergeWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _merge__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/merge.js"); - - -function mergeWith() { - var otherSources = []; - for (var _i = 0; _i < arguments.length; _i++) { - otherSources[_i] = arguments[_i]; - } - return _merge__WEBPACK_IMPORTED_MODULE_1__[/* merge */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherSources))); -} -//# sourceMappingURL=mergeWith.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/min.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return min; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function min(comparer) { - return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[/* reduce */ "a"])(Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(comparer) ? function (x, y) { return (comparer(x, y) < 0 ? x : y); } : function (x, y) { return (x < y ? x : y); }); -} -//# sourceMappingURL=min.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return multicast; }); -/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _connect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/connect.js"); - - - -function multicast(subjectOrSubjectFactory, selector) { - var subjectFactory = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; }; - if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(selector)) { - return Object(_connect__WEBPACK_IMPORTED_MODULE_2__[/* connect */ "a"])(selector, { - connector: subjectFactory, - }); - } - return function (source) { return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__[/* ConnectableObservable */ "a"](source, subjectFactory); }; -} -//# sourceMappingURL=multicast.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return observeOn; }); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function observeOn(scheduler, delay) { - if (delay === void 0) { delay = 0; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_0__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { return subscriber.error(err); }, delay); })); - }); -} -//# sourceMappingURL=observeOn.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return onErrorResumeNext; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - - - - - - -function onErrorResumeNext() { - var sources = []; - for (var _i = 0; _i < arguments.length; _i++) { - sources[_i] = arguments[_i]; - } - var nextSources = Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_3__[/* argsOrArgArray */ "a"])(sources); - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var remaining = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(nextSources)); - var subscribeNext = function () { - if (!subscriber.closed) { - if (remaining.length > 0) { - var nextSource = void 0; - try { - nextSource = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(remaining.shift()); - } - catch (err) { - subscribeNext(); - return; - } - var innerSub = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"], _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"]); - nextSource.subscribe(innerSub); - innerSub.add(subscribeNext); - } - else { - subscriber.complete(); - } - } - }; - subscribeNext(); - }); -} -//# sourceMappingURL=onErrorResumeNext.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pairwise; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function pairwise() { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var prev; - var hasPrev = false; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var p = prev; - prev = value; - hasPrev && subscriber.next([p, value]); - hasPrev = true; - })); - }); -} -//# sourceMappingURL=pairwise.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/partition.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return partition; }); -/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/not.js"); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); - - -function partition(predicate, thisArg) { - return function (source) { - return [Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(predicate, thisArg)(source), Object(_filter__WEBPACK_IMPORTED_MODULE_1__[/* filter */ "a"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__[/* not */ "a"])(predicate, thisArg))(source)]; - }; -} -//# sourceMappingURL=partition.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/pluck.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pluck; }); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); - -function pluck() { - var properties = []; - for (var _i = 0; _i < arguments.length; _i++) { - properties[_i] = arguments[_i]; - } - var length = properties.length; - if (length === 0) { - throw new Error('list of properties cannot be empty.'); - } - return Object(_map__WEBPACK_IMPORTED_MODULE_0__[/* map */ "a"])(function (x) { - var currentProp = x; - for (var i = 0; i < length; i++) { - var p = currentProp === null || currentProp === void 0 ? void 0 : currentProp[properties[i]]; - if (typeof p !== 'undefined') { - currentProp = p; - } - else { - return undefined; - } - } - return currentProp; - }); -} -//# sourceMappingURL=pluck.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/publish.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return publish; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js"); -/* harmony import */ var _connect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/connect.js"); - - - -function publish(selector) { - return selector ? function (source) { return Object(_connect__WEBPACK_IMPORTED_MODULE_2__[/* connect */ "a"])(selector)(source); } : function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__[/* multicast */ "a"])(new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"]())(source); }; -} -//# sourceMappingURL=publish.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return publishBehavior; }); -/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js"); -/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"); - - -function publishBehavior(initialValue) { - return function (source) { - var subject = new _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__[/* BehaviorSubject */ "a"](initialValue); - return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__[/* ConnectableObservable */ "a"](source, function () { return subject; }); - }; -} -//# sourceMappingURL=publishBehavior.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/publishLast.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return publishLast; }); -/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js"); -/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js"); - - -function publishLast() { - return function (source) { - var subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__[/* AsyncSubject */ "a"](); - return new _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__[/* ConnectableObservable */ "a"](source, function () { return subject; }); - }; -} -//# sourceMappingURL=publishLast.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return publishReplay; }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js"); -/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - - -function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) { - if (selectorOrScheduler && !Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[/* isFunction */ "a"])(selectorOrScheduler)) { - timestampProvider = selectorOrScheduler; - } - var selector = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[/* isFunction */ "a"])(selectorOrScheduler) ? selectorOrScheduler : undefined; - return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__[/* multicast */ "a"])(new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__[/* ReplaySubject */ "a"](bufferSize, windowTime, timestampProvider), selector)(source); }; -} -//# sourceMappingURL=publishReplay.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/race.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return race; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js"); -/* harmony import */ var _raceWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/raceWith.js"); - - - -function race() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return _raceWith__WEBPACK_IMPORTED_MODULE_2__[/* raceWith */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(Object(_util_argsOrArgArray__WEBPACK_IMPORTED_MODULE_1__[/* argsOrArgArray */ "a"])(args)))); -} -//# sourceMappingURL=race.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/raceWith.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return raceWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/race.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - - - - -function raceWith() { - var otherSources = []; - for (var _i = 0; _i < arguments.length; _i++) { - otherSources[_i] = arguments[_i]; - } - return !otherSources.length - ? _util_identity__WEBPACK_IMPORTED_MODULE_3__[/* identity */ "a"] - : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - Object(_observable_race__WEBPACK_IMPORTED_MODULE_1__[/* raceInit */ "b"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherSources)))(subscriber); - }); -} -//# sourceMappingURL=raceWith.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return reduce; }); -/* harmony import */ var _scanInternals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - - -function reduce(accumulator, seed) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(Object(_scanInternals__WEBPACK_IMPORTED_MODULE_0__[/* scanInternals */ "a"])(accumulator, seed, arguments.length >= 2, false, true)); -} -//# sourceMappingURL=reduce.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return refCount; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function refCount() { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var connection = null; - source._refCount++; - var refCounter = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, undefined, undefined, function () { - if (!source || source._refCount <= 0 || 0 < --source._refCount) { - connection = null; - return; - } - var sharedConnection = source._connection; - var conn = connection; - connection = null; - if (sharedConnection && (!conn || sharedConnection === conn)) { - sharedConnection.unsubscribe(); - } - subscriber.unsubscribe(); - }); - source.subscribe(refCounter); - if (!refCounter.closed) { - connection = source.connect(); - } - }); -} -//# sourceMappingURL=refCount.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/repeat.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return repeat; }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); - - - - - -function repeat(countOrConfig) { - var _a; - var count = Infinity; - var delay; - if (countOrConfig != null) { - if (typeof countOrConfig === 'object') { - (_a = countOrConfig.count, count = _a === void 0 ? Infinity : _a, delay = countOrConfig.delay); - } - else { - count = countOrConfig; - } - } - return count <= 0 - ? function () { return _observable_empty__WEBPACK_IMPORTED_MODULE_0__[/* EMPTY */ "a"]; } - : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var soFar = 0; - var sourceSub; - var resubscribe = function () { - sourceSub === null || sourceSub === void 0 ? void 0 : sourceSub.unsubscribe(); - sourceSub = null; - if (delay != null) { - var notifier = typeof delay === 'number' ? Object(_observable_timer__WEBPACK_IMPORTED_MODULE_4__[/* timer */ "a"])(delay) : Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(delay(soFar)); - var notifierSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - notifierSubscriber_1.unsubscribe(); - subscribeToSource(); - }); - notifier.subscribe(notifierSubscriber_1); - } - else { - subscribeToSource(); - } - }; - var subscribeToSource = function () { - var syncUnsub = false; - sourceSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, function () { - if (++soFar < count) { - if (sourceSub) { - resubscribe(); - } - else { - syncUnsub = true; - } - } - else { - subscriber.complete(); - } - })); - if (syncUnsub) { - resubscribe(); - } - }; - subscribeToSource(); - }); -} -//# sourceMappingURL=repeat.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return repeatWhen; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function repeatWhen(notifier) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var innerSub; - var syncResub = false; - var completions$; - var isNotifierComplete = false; - var isMainComplete = false; - var checkComplete = function () { return isMainComplete && isNotifierComplete && (subscriber.complete(), true); }; - var getCompletionSubject = function () { - if (!completions$) { - completions$ = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); - notifier(completions$).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - if (innerSub) { - subscribeForRepeatWhen(); - } - else { - syncResub = true; - } - }, function () { - isNotifierComplete = true; - checkComplete(); - })); - } - return completions$; - }; - var subscribeForRepeatWhen = function () { - isMainComplete = false; - innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, function () { - isMainComplete = true; - !checkComplete() && getCompletionSubject().next(); - })); - if (syncResub) { - innerSub.unsubscribe(); - innerSub = null; - syncResub = false; - subscribeForRepeatWhen(); - } - }; - subscribeForRepeatWhen(); - }); -} -//# sourceMappingURL=repeatWhen.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/retry.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return retry; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - - - - - -function retry(configOrCount) { - if (configOrCount === void 0) { configOrCount = Infinity; } - var config; - if (configOrCount && typeof configOrCount === 'object') { - config = configOrCount; - } - else { - config = { - count: configOrCount, - }; - } - var _a = config.count, count = _a === void 0 ? Infinity : _a, delay = config.delay, _b = config.resetOnSuccess, resetOnSuccess = _b === void 0 ? false : _b; - return count <= 0 - ? _util_identity__WEBPACK_IMPORTED_MODULE_2__[/* identity */ "a"] - : Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var soFar = 0; - var innerSub; - var subscribeForRetry = function () { - var syncUnsub = false; - innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - if (resetOnSuccess) { - soFar = 0; - } - subscriber.next(value); - }, undefined, function (err) { - if (soFar++ < count) { - var resub_1 = function () { - if (innerSub) { - innerSub.unsubscribe(); - innerSub = null; - subscribeForRetry(); - } - else { - syncUnsub = true; - } - }; - if (delay != null) { - var notifier = typeof delay === 'number' ? Object(_observable_timer__WEBPACK_IMPORTED_MODULE_3__[/* timer */ "a"])(delay) : Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__[/* innerFrom */ "a"])(delay(err, soFar)); - var notifierSubscriber_1 = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - notifierSubscriber_1.unsubscribe(); - resub_1(); - }, function () { - subscriber.complete(); - }); - notifier.subscribe(notifierSubscriber_1); - } - else { - resub_1(); - } - } - else { - subscriber.error(err); - } - })); - if (syncUnsub) { - innerSub.unsubscribe(); - innerSub = null; - subscribeForRetry(); - } - }; - subscribeForRetry(); - }); -} -//# sourceMappingURL=retry.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return retryWhen; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function retryWhen(notifier) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var innerSub; - var syncResub = false; - var errors$; - var subscribeForRetryWhen = function () { - innerSub = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, undefined, undefined, function (err) { - if (!errors$) { - errors$ = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); - notifier(errors$).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - return innerSub ? subscribeForRetryWhen() : (syncResub = true); - })); - } - if (errors$) { - errors$.next(err); - } - })); - if (syncResub) { - innerSub.unsubscribe(); - innerSub = null; - syncResub = false; - subscribeForRetryWhen(); - } - }; - subscribeForRetryWhen(); - }); -} -//# sourceMappingURL=retryWhen.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/sample.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return sample; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function sample(notifier) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var hasValue = false; - var lastValue = null; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - hasValue = true; - lastValue = value; - })); - notifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - if (hasValue) { - hasValue = false; - var value = lastValue; - lastValue = null; - subscriber.next(value); - } - }, _util_noop__WEBPACK_IMPORTED_MODULE_1__[/* noop */ "a"])); - }); -} -//# sourceMappingURL=sample.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return sampleTime; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _sample__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sample.js"); -/* harmony import */ var _observable_interval__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/interval.js"); - - - -function sampleTime(period, scheduler) { - if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } - return Object(_sample__WEBPACK_IMPORTED_MODULE_1__[/* sample */ "a"])(Object(_observable_interval__WEBPACK_IMPORTED_MODULE_2__[/* interval */ "a"])(period, scheduler)); -} -//# sourceMappingURL=sampleTime.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/scan.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scan; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _scanInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js"); - - -function scan(accumulator, seed) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(Object(_scanInternals__WEBPACK_IMPORTED_MODULE_1__[/* scanInternals */ "a"])(accumulator, seed, arguments.length >= 2, true)); -} -//# sourceMappingURL=scan.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scanInternals; }); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - -function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) { - return function (source, subscriber) { - var hasState = hasSeed; - var state = seed; - var index = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_0__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var i = index++; - state = hasState - ? - accumulator(state, value, i) - : - ((hasState = true), value); - emitOnNext && subscriber.next(state); - }, emitBeforeComplete && - (function () { - hasState && subscriber.next(state); - subscriber.complete(); - }))); - }; -} -//# sourceMappingURL=scanInternals.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return sequenceEqual; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function sequenceEqual(compareTo, comparator) { - if (comparator === void 0) { comparator = function (a, b) { return a === b; }; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var aState = createState(); - var bState = createState(); - var emit = function (isEqual) { - subscriber.next(isEqual); - subscriber.complete(); - }; - var createSubscriber = function (selfState, otherState) { - var sequenceEqualSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (a) { - var buffer = otherState.buffer, complete = otherState.complete; - if (buffer.length === 0) { - complete ? emit(false) : selfState.buffer.push(a); - } - else { - !comparator(a, buffer.shift()) && emit(false); - } - }, function () { - selfState.complete = true; - var complete = otherState.complete, buffer = otherState.buffer; - complete && emit(buffer.length === 0); - sequenceEqualSubscriber === null || sequenceEqualSubscriber === void 0 ? void 0 : sequenceEqualSubscriber.unsubscribe(); - }); - return sequenceEqualSubscriber; - }; - source.subscribe(createSubscriber(aState, bState)); - compareTo.subscribe(createSubscriber(bState, aState)); - }); -} -function createState() { - return { - buffer: [], - complete: false, - }; -} -//# sourceMappingURL=sequenceEqual.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/share.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return share; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/from.js"); -/* harmony import */ var _operators_take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscriber.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - - - - - - -function share(options) { - if (options === void 0) { options = {}; } - var _a = options.connector, connector = _a === void 0 ? function () { return new _Subject__WEBPACK_IMPORTED_MODULE_3__[/* Subject */ "a"](); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d; - return function (wrapperSource) { - var connection = null; - var resetConnection = null; - var subject = null; - var refCount = 0; - var hasCompleted = false; - var hasErrored = false; - var cancelReset = function () { - resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe(); - resetConnection = null; - }; - var reset = function () { - cancelReset(); - connection = subject = null; - hasCompleted = hasErrored = false; - }; - var resetAndUnsubscribe = function () { - var conn = connection; - reset(); - conn === null || conn === void 0 ? void 0 : conn.unsubscribe(); - }; - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_5__[/* operate */ "b"])(function (source, subscriber) { - refCount++; - if (!hasErrored && !hasCompleted) { - cancelReset(); - } - var dest = (subject = subject !== null && subject !== void 0 ? subject : connector()); - subscriber.add(function () { - refCount--; - if (refCount === 0 && !hasErrored && !hasCompleted) { - resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero); - } - }); - dest.subscribe(subscriber); - if (!connection) { - connection = new _Subscriber__WEBPACK_IMPORTED_MODULE_4__[/* SafeSubscriber */ "a"]({ - next: function (value) { return dest.next(value); }, - error: function (err) { - hasErrored = true; - cancelReset(); - resetConnection = handleReset(reset, resetOnError, err); - dest.error(err); - }, - complete: function () { - hasCompleted = true; - cancelReset(); - resetConnection = handleReset(reset, resetOnComplete); - dest.complete(); - }, - }); - Object(_observable_from__WEBPACK_IMPORTED_MODULE_1__[/* from */ "a"])(source).subscribe(connection); - } - })(wrapperSource); - }; -} -function handleReset(reset, on) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - if (on === true) { - reset(); - return null; - } - if (on === false) { - return null; - } - return on.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))).pipe(Object(_operators_take__WEBPACK_IMPORTED_MODULE_2__[/* take */ "a"])(1)) - .subscribe(function () { return reset(); }); -} -//# sourceMappingURL=share.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return shareReplay; }); -/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js"); -/* harmony import */ var _share__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/share.js"); - - -function shareReplay(configOrBufferSize, windowTime, scheduler) { - var _a, _b, _c; - var bufferSize; - var refCount = false; - if (configOrBufferSize && typeof configOrBufferSize === 'object') { - (_a = configOrBufferSize.bufferSize, bufferSize = _a === void 0 ? Infinity : _a, _b = configOrBufferSize.windowTime, windowTime = _b === void 0 ? Infinity : _b, _c = configOrBufferSize.refCount, refCount = _c === void 0 ? false : _c, scheduler = configOrBufferSize.scheduler); - } - else { - bufferSize = configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity; - } - return Object(_share__WEBPACK_IMPORTED_MODULE_1__[/* share */ "a"])({ - connector: function () { return new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__[/* ReplaySubject */ "a"](bufferSize, windowTime, scheduler); }, - resetOnError: true, - resetOnComplete: false, - resetOnRefCountZero: refCount, - }); -} -//# sourceMappingURL=shareReplay.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/single.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return single; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); -/* harmony import */ var _util_SequenceError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js"); -/* harmony import */ var _util_NotFoundError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - - - -function single(predicate) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__[/* operate */ "b"])(function (source, subscriber) { - var hasValue = false; - var singleValue; - var seenValue = false; - var index = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - seenValue = true; - if (!predicate || predicate(value, index++, source)) { - hasValue && subscriber.error(new _util_SequenceError__WEBPACK_IMPORTED_MODULE_1__[/* SequenceError */ "a"]('Too many matching values')); - hasValue = true; - singleValue = value; - } - }, function () { - if (hasValue) { - subscriber.next(singleValue); - subscriber.complete(); - } - else { - subscriber.error(seenValue ? new _util_NotFoundError__WEBPACK_IMPORTED_MODULE_2__[/* NotFoundError */ "a"]('No matching values') : new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"]()); - } - })); - }); -} -//# sourceMappingURL=single.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/skip.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return skip; }); -/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); - -function skip(count) { - return Object(_filter__WEBPACK_IMPORTED_MODULE_0__[/* filter */ "a"])(function (_, index) { return count <= index; }); -} -//# sourceMappingURL=skip.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/skipLast.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return skipLast; }); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function skipLast(skipCount) { - return skipCount <= 0 - ? - _util_identity__WEBPACK_IMPORTED_MODULE_0__[/* identity */ "a"] - : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var ring = new Array(skipCount); - var seen = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var valueIndex = seen++; - if (valueIndex < skipCount) { - ring[valueIndex] = value; - } - else { - var index = valueIndex % skipCount; - var oldValue = ring[index]; - ring[index] = value; - subscriber.next(oldValue); - } - })); - return function () { - ring = null; - }; - }); -} -//# sourceMappingURL=skipLast.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return skipUntil; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - - - - -function skipUntil(notifier) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var taking = false; - var skipSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - skipSubscriber === null || skipSubscriber === void 0 ? void 0 : skipSubscriber.unsubscribe(); - taking = true; - }, _util_noop__WEBPACK_IMPORTED_MODULE_3__[/* noop */ "a"]); - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(notifier).subscribe(skipSubscriber); - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return taking && subscriber.next(value); })); - }); -} -//# sourceMappingURL=skipUntil.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return skipWhile; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function skipWhile(predicate) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var taking = false; - var index = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return (taking || (taking = !predicate(value, index++))) && subscriber.next(value); })); - }); -} -//# sourceMappingURL=skipWhile.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/startWith.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return startWith; }); -/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/concat.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - - - -function startWith() { - var values = []; - for (var _i = 0; _i < arguments.length; _i++) { - values[_i] = arguments[_i]; - } - var scheduler = Object(_util_args__WEBPACK_IMPORTED_MODULE_1__[/* popScheduler */ "c"])(values); - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - (scheduler ? Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__[/* concat */ "a"])(values, source, scheduler) : Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__[/* concat */ "a"])(values, source)).subscribe(subscriber); - }); -} -//# sourceMappingURL=startWith.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return subscribeOn; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - -function subscribeOn(scheduler, delay) { - if (delay === void 0) { delay = 0; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay)); - }); -} -//# sourceMappingURL=subscribeOn.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/switchAll.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return switchAll; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - - -function switchAll() { - return Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__[/* switchMap */ "a"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__[/* identity */ "a"]); -} -//# sourceMappingURL=switchAll.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return switchMap; }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function switchMap(project, resultSelector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var innerSubscriber = null; - var index = 0; - var isComplete = false; - var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); }; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe(); - var innerIndex = 0; - var outerIndex = index++; - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(project(value, outerIndex)).subscribe((innerSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () { - innerSubscriber = null; - checkComplete(); - }))); - }, function () { - isComplete = true; - checkComplete(); - })); - }); -} -//# sourceMappingURL=switchMap.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return switchMapTo; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function switchMapTo(innerObservable, resultSelector) { - return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(resultSelector) ? Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__[/* switchMap */ "a"])(function () { return innerObservable; }, resultSelector) : Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__[/* switchMap */ "a"])(function () { return innerObservable; }); -} -//# sourceMappingURL=switchMapTo.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/switchScan.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return switchScan; }); -/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - - -function switchScan(accumulator, seed) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var state = seed; - Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__[/* switchMap */ "a"])(function (value, index) { return accumulator(state, value, index); }, function (_, innerValue) { return ((state = innerValue), innerValue); })(source).subscribe(subscriber); - return function () { - state = null; - }; - }); -} -//# sourceMappingURL=switchScan.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/take.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return take; }); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function take(count) { - return count <= 0 - ? - function () { return _observable_empty__WEBPACK_IMPORTED_MODULE_0__[/* EMPTY */ "a"]; } - : Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var seen = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - if (++seen <= count) { - subscriber.next(value); - if (count <= seen) { - subscriber.complete(); - } - } - })); - }); -} -//# sourceMappingURL=take.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/takeLast.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return takeLast; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/empty.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - - -function takeLast(count) { - return count <= 0 - ? function () { return _observable_empty__WEBPACK_IMPORTED_MODULE_1__[/* EMPTY */ "a"]; } - : Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - var buffer = []; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - buffer.push(value); - count < buffer.length && buffer.shift(); - }, function () { - var e_1, _a; - try { - for (var buffer_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) { - var value = buffer_1_1.value; - subscriber.next(value); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1); - } - finally { if (e_1) throw e_1.error; } - } - subscriber.complete(); - }, undefined, function () { - buffer = null; - })); - }); -} -//# sourceMappingURL=takeLast.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return takeUntil; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - - - - -function takeUntil(notifier) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(notifier).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function () { return subscriber.complete(); }, _util_noop__WEBPACK_IMPORTED_MODULE_3__[/* noop */ "a"])); - !subscriber.closed && source.subscribe(subscriber); - }); -} -//# sourceMappingURL=takeUntil.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return takeWhile; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - -function takeWhile(predicate, inclusive) { - if (inclusive === void 0) { inclusive = false; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var index = 0; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var result = predicate(value, index++); - (result || inclusive) && subscriber.next(value); - !result && subscriber.complete(); - })); - }); -} -//# sourceMappingURL=takeWhile.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/tap.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return tap; }); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - - - - -function tap(observerOrNext, error, complete) { - var tapObserver = Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(observerOrNext) || error || complete - ? - { next: observerOrNext, error: error, complete: complete } - : observerOrNext; - return tapObserver - ? Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var _a; - (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); - var isUnsub = true; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var _a; - (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value); - subscriber.next(value); - }, function () { - var _a; - isUnsub = false; - (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver); - subscriber.complete(); - }, function (err) { - var _a; - isUnsub = false; - (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err); - subscriber.error(err); - }, function () { - var _a, _b; - if (isUnsub) { - (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); - } - (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver); - })); - }) - : - _util_identity__WEBPACK_IMPORTED_MODULE_3__[/* identity */ "a"]; -} -//# sourceMappingURL=tap.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return defaultThrottleConfig; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return throttle; }); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - - - -var defaultThrottleConfig = { - leading: true, - trailing: false, -}; -function throttle(durationSelector, config) { - if (config === void 0) { config = defaultThrottleConfig; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_0__[/* operate */ "b"])(function (source, subscriber) { - var leading = config.leading, trailing = config.trailing; - var hasValue = false; - var sendValue = null; - var throttled = null; - var isComplete = false; - var endThrottling = function () { - throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe(); - throttled = null; - if (trailing) { - send(); - isComplete && subscriber.complete(); - } - }; - var cleanupThrottling = function () { - throttled = null; - isComplete && subscriber.complete(); - }; - var startThrottle = function (value) { - return (throttled = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_2__[/* innerFrom */ "a"])(durationSelector(value)).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, endThrottling, cleanupThrottling))); - }; - var send = function () { - if (hasValue) { - hasValue = false; - var value = sendValue; - sendValue = null; - subscriber.next(value); - !isComplete && startThrottle(value); - } - }; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_1__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - hasValue = true; - sendValue = value; - !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value)); - }, function () { - isComplete = true; - !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete(); - })); - }); -} -//# sourceMappingURL=throttle.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throttleTime; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js"); -/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/timer.js"); - - - -function throttleTime(duration, scheduler, config) { - if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } - if (config === void 0) { config = _throttle__WEBPACK_IMPORTED_MODULE_1__[/* defaultThrottleConfig */ "a"]; } - var duration$ = Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__[/* timer */ "a"])(duration, scheduler); - return Object(_throttle__WEBPACK_IMPORTED_MODULE_1__[/* throttle */ "b"])(function () { return duration$; }, config); -} -//# sourceMappingURL=throttleTime.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return throwIfEmpty; }); -/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function throwIfEmpty(errorFactory) { - if (errorFactory === void 0) { errorFactory = defaultErrorFactory; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var hasValue = false; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - hasValue = true; - subscriber.next(value); - }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); })); - }); -} -function defaultErrorFactory() { - return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__[/* EmptyError */ "a"](); -} -//# sourceMappingURL=throwIfEmpty.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timeInterval; }); -/* unused harmony export TimeInterval */ -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - -function timeInterval(scheduler) { - if (scheduler === void 0) { scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"]; } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var last = scheduler.now(); - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var now = scheduler.now(); - var interval = now - last; - last = now; - subscriber.next(new TimeInterval(value, interval)); - })); - }); -} -var TimeInterval = (function () { - function TimeInterval(value, interval) { - this.value = value; - this.interval = interval; - } - return TimeInterval; -}()); - -//# sourceMappingURL=timeInterval.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TimeoutError; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return timeout; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isDate.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_createErrorClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - - - - - - - -var TimeoutError = Object(_util_createErrorClass__WEBPACK_IMPORTED_MODULE_4__[/* createErrorClass */ "a"])(function (_super) { - return function TimeoutErrorImpl(info) { - if (info === void 0) { info = null; } - _super(this); - this.message = 'Timeout has occurred'; - this.name = 'TimeoutError'; - this.info = info; - }; -}); -function timeout(config, schedulerArg) { - var _a = (Object(_util_isDate__WEBPACK_IMPORTED_MODULE_1__[/* isValidDate */ "a"])(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* asyncScheduler */ "b"] : _c, _d = _a.meta, meta = _d === void 0 ? null : _d; - if (first == null && each == null) { - throw new TypeError('No timeout provided.'); - } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - var originalSourceSubscription; - var timerSubscription; - var lastValue = null; - var seen = 0; - var startTimer = function (delay) { - timerSubscription = Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_6__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { - try { - originalSourceSubscription.unsubscribe(); - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(_with({ - meta: meta, - lastValue: lastValue, - seen: seen, - })).subscribe(subscriber); - } - catch (err) { - subscriber.error(err); - } - }, delay); - }; - originalSourceSubscription = source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); - seen++; - subscriber.next((lastValue = value)); - each > 0 && startTimer(each); - }, undefined, undefined, function () { - if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) { - timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe(); - } - lastValue = null; - })); - !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each); - }); -} -function timeoutErrorFactory(info) { - throw new TimeoutError(info); -} -//# sourceMappingURL=timeout.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timeoutWith; }); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isDate.js"); -/* harmony import */ var _timeout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js"); - - - -function timeoutWith(due, withObservable, scheduler) { - var first; - var each; - var _with; - scheduler = scheduler !== null && scheduler !== void 0 ? scheduler : _scheduler_async__WEBPACK_IMPORTED_MODULE_0__[/* async */ "a"]; - if (Object(_util_isDate__WEBPACK_IMPORTED_MODULE_1__[/* isValidDate */ "a"])(due)) { - first = due; - } - else if (typeof due === 'number') { - each = due; - } - if (withObservable) { - _with = function () { return withObservable; }; - } - else { - throw new TypeError('No observable provided to switch to'); - } - if (first == null && each == null) { - throw new TypeError('No timeout provided.'); - } - return Object(_timeout__WEBPACK_IMPORTED_MODULE_2__[/* timeout */ "b"])({ - first: first, - each: each, - scheduler: scheduler, - with: _with, - }); -} -//# sourceMappingURL=timeoutWith.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/timestamp.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timestamp; }); -/* harmony import */ var _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js"); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); - - -function timestamp(timestampProvider) { - if (timestampProvider === void 0) { timestampProvider = _scheduler_dateTimestampProvider__WEBPACK_IMPORTED_MODULE_0__[/* dateTimestampProvider */ "a"]; } - return Object(_map__WEBPACK_IMPORTED_MODULE_1__[/* map */ "a"])(function (value) { return ({ value: value, timestamp: timestampProvider.now() }); }); -} -//# sourceMappingURL=timestamp.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/toArray.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return toArray; }); -/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - - -var arrReducer = function (arr, value) { return (arr.push(value), arr); }; -function toArray() { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - Object(_reduce__WEBPACK_IMPORTED_MODULE_0__[/* reduce */ "a"])(arrReducer, [])(source).subscribe(subscriber); - }); -} -//# sourceMappingURL=toArray.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/window.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return window; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); - - - - -function window(windowBoundaries) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var windowSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); - subscriber.next(windowSubject.asObservable()); - var errorHandler = function (err) { - windowSubject.error(err); - subscriber.error(err); - }; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.next(value); }, function () { - windowSubject.complete(); - subscriber.complete(); - }, errorHandler)); - windowBoundaries.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function () { - windowSubject.complete(); - subscriber.next((windowSubject = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"]())); - }, _util_noop__WEBPACK_IMPORTED_MODULE_3__[/* noop */ "a"], errorHandler)); - return function () { - windowSubject === null || windowSubject === void 0 ? void 0 : windowSubject.unsubscribe(); - windowSubject = null; - }; - }); -} -//# sourceMappingURL=window.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/windowCount.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return windowCount; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); - - - - -function windowCount(windowSize, startWindowEvery) { - if (startWindowEvery === void 0) { startWindowEvery = 0; } - var startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize; - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - var windows = [new _Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"]()]; - var starts = []; - var count = 0; - subscriber.next(windows[0].asObservable()); - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_3__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var e_1, _a; - try { - for (var windows_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(windows), windows_1_1 = windows_1.next(); !windows_1_1.done; windows_1_1 = windows_1.next()) { - var window_1 = windows_1_1.value; - window_1.next(value); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (windows_1_1 && !windows_1_1.done && (_a = windows_1.return)) _a.call(windows_1); - } - finally { if (e_1) throw e_1.error; } - } - var c = count - windowSize + 1; - if (c >= 0 && c % startEvery === 0) { - windows.shift().complete(); - } - if (++count % startEvery === 0) { - var window_2 = new _Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"](); - windows.push(window_2); - subscriber.next(window_2.asObservable()); - } - }, function () { - while (windows.length > 0) { - windows.shift().complete(); - } - subscriber.complete(); - }, function (err) { - while (windows.length > 0) { - windows.shift().error(err); - } - subscriber.error(err); - }, function () { - starts = null; - windows = null; - })); - }); -} -//# sourceMappingURL=windowCount.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/windowTime.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return windowTime; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - - - - - - - - -function windowTime(windowTimeSpan) { - var _a, _b; - var otherArgs = []; - for (var _i = 1; _i < arguments.length; _i++) { - otherArgs[_i - 1] = arguments[_i]; - } - var scheduler = (_a = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popScheduler */ "c"])(otherArgs)) !== null && _a !== void 0 ? _a : _scheduler_async__WEBPACK_IMPORTED_MODULE_1__[/* asyncScheduler */ "b"]; - var windowCreationInterval = (_b = otherArgs[0]) !== null && _b !== void 0 ? _b : null; - var maxWindowSize = otherArgs[1] || Infinity; - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__[/* operate */ "b"])(function (source, subscriber) { - var windowRecords = []; - var restartOnClose = false; - var closeWindow = function (record) { - var window = record.window, subs = record.subs; - window.complete(); - subs.unsubscribe(); - Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_5__[/* arrRemove */ "a"])(windowRecords, record); - restartOnClose && startWindow(); - }; - var startWindow = function () { - if (windowRecords) { - var subs = new _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"](); - subscriber.add(subs); - var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); - var record_1 = { - window: window_1, - subs: subs, - seen: 0, - }; - windowRecords.push(record_1); - subscriber.next(window_1.asObservable()); - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__[/* executeSchedule */ "a"])(subs, scheduler, function () { return closeWindow(record_1); }, windowTimeSpan); - } - }; - if (windowCreationInterval !== null && windowCreationInterval >= 0) { - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_7__[/* executeSchedule */ "a"])(subscriber, scheduler, startWindow, windowCreationInterval, true); - } - else { - restartOnClose = true; - } - startWindow(); - var loop = function (cb) { return windowRecords.slice().forEach(cb); }; - var terminate = function (cb) { - loop(function (_a) { - var window = _a.window; - return cb(window); - }); - cb(subscriber); - subscriber.unsubscribe(); - }; - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_4__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - loop(function (record) { - record.window.next(value); - maxWindowSize <= ++record.seen && closeWindow(record); - }); - }, function () { return terminate(function (consumer) { return consumer.complete(); }); }, function (err) { return terminate(function (consumer) { return consumer.error(err); }); })); - return function () { - windowRecords = null; - }; - }); -} -//# sourceMappingURL=windowTime.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return windowToggle; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); - - - - - - - - -function windowToggle(openings, closingSelector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_3__[/* operate */ "b"])(function (source, subscriber) { - var windows = []; - var handleError = function (err) { - while (0 < windows.length) { - windows.shift().error(err); - } - subscriber.error(err); - }; - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__[/* innerFrom */ "a"])(openings).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, function (openValue) { - var window = new _Subject__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"](); - windows.push(window); - var closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"](); - var closeWindow = function () { - Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_7__[/* arrRemove */ "a"])(windows, window); - window.complete(); - closingSubscription.unsubscribe(); - }; - var closingNotifier; - try { - closingNotifier = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_4__[/* innerFrom */ "a"])(closingSelector(openValue)); - } - catch (err) { - handleError(err); - return; - } - subscriber.next(window.asObservable()); - closingSubscription.add(closingNotifier.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, closeWindow, _util_noop__WEBPACK_IMPORTED_MODULE_6__[/* noop */ "a"], handleError))); - }, _util_noop__WEBPACK_IMPORTED_MODULE_6__[/* noop */ "a"])); - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_5__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - var e_1, _a; - var windowsCopy = windows.slice(); - try { - for (var windowsCopy_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __values */ "i"])(windowsCopy), windowsCopy_1_1 = windowsCopy_1.next(); !windowsCopy_1_1.done; windowsCopy_1_1 = windowsCopy_1.next()) { - var window_1 = windowsCopy_1_1.value; - window_1.next(value); - } - } - catch (e_1_1) { e_1 = { error: e_1_1 }; } - finally { - try { - if (windowsCopy_1_1 && !windowsCopy_1_1.done && (_a = windowsCopy_1.return)) _a.call(windowsCopy_1); - } - finally { if (e_1) throw e_1.error; } - } - }, function () { - while (0 < windows.length) { - windows.shift().complete(); - } - subscriber.complete(); - }, handleError, function () { - while (0 < windows.length) { - windows.shift().unsubscribe(); - } - })); - }); -} -//# sourceMappingURL=windowToggle.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return windowWhen; }); -/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); - - - - -function windowWhen(closingSelector) { - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var window; - var closingSubscriber; - var handleError = function (err) { - window.error(err); - subscriber.error(err); - }; - var openWindow = function () { - closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); - window === null || window === void 0 ? void 0 : window.complete(); - window = new _Subject__WEBPACK_IMPORTED_MODULE_0__[/* Subject */ "a"](); - subscriber.next(window.asObservable()); - var closingNotifier; - try { - closingNotifier = Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(closingSelector()); - } - catch (err) { - handleError(err); - return; - } - closingNotifier.subscribe((closingSubscriber = Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, openWindow, openWindow, handleError))); - }; - openWindow(); - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { return window.next(value); }, function () { - window.complete(); - subscriber.complete(); - }, handleError, function () { - closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); - window = null; - })); - }); -} -//# sourceMappingURL=windowWhen.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return withLatestFrom; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); -/* harmony import */ var _OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js"); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); -/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/noop.js"); -/* harmony import */ var _util_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/args.js"); - - - - - - - -function withLatestFrom() { - var inputs = []; - for (var _i = 0; _i < arguments.length; _i++) { - inputs[_i] = arguments[_i]; - } - var project = Object(_util_args__WEBPACK_IMPORTED_MODULE_6__[/* popResultSelector */ "b"])(inputs); - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_1__[/* operate */ "b"])(function (source, subscriber) { - var len = inputs.length; - var otherValues = new Array(len); - var hasValue = inputs.map(function () { return false; }); - var ready = false; - var _loop_1 = function (i) { - Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_3__[/* innerFrom */ "a"])(inputs[i]).subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - otherValues[i] = value; - if (!ready && !hasValue[i]) { - hasValue[i] = true; - (ready = hasValue.every(_util_identity__WEBPACK_IMPORTED_MODULE_4__[/* identity */ "a"])) && (hasValue = null); - } - }, _util_noop__WEBPACK_IMPORTED_MODULE_5__[/* noop */ "a"])); - }; - for (var i = 0; i < len; i++) { - _loop_1(i); - } - source.subscribe(Object(_OperatorSubscriber__WEBPACK_IMPORTED_MODULE_2__[/* createOperatorSubscriber */ "b"])(subscriber, function (value) { - if (ready) { - var values = Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([value], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherValues)); - subscriber.next(project ? project.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(values))) : values); - } - })); - }); -} -//# sourceMappingURL=withLatestFrom.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/zip.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return zip; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/zip.js"); -/* harmony import */ var _util_lift__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/lift.js"); - - - -function zip() { - var sources = []; - for (var _i = 0; _i < arguments.length; _i++) { - sources[_i] = arguments[_i]; - } - return Object(_util_lift__WEBPACK_IMPORTED_MODULE_2__[/* operate */ "b"])(function (source, subscriber) { - _observable_zip__WEBPACK_IMPORTED_MODULE_1__[/* zip */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([source], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(sources))).subscribe(subscriber); - }); -} -//# sourceMappingURL=zip.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/zipAll.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return zipAll; }); -/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/zip.js"); -/* harmony import */ var _joinAllInternals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/joinAllInternals.js"); - - -function zipAll(project) { - return Object(_joinAllInternals__WEBPACK_IMPORTED_MODULE_1__[/* joinAllInternals */ "a"])(_observable_zip__WEBPACK_IMPORTED_MODULE_0__[/* zip */ "a"], project); -} -//# sourceMappingURL=zipAll.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/operators/zipWith.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return zipWith; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _zip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zip.js"); - - -function zipWith() { - var otherInputs = []; - for (var _i = 0; _i < arguments.length; _i++) { - otherInputs[_i] = arguments[_i]; - } - return _zip__WEBPACK_IMPORTED_MODULE_1__[/* zip */ "a"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(otherInputs))); -} -//# sourceMappingURL=zipWith.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleArray; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); - -function scheduleArray(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - var i = 0; - return scheduler.schedule(function () { - if (i === input.length) { - subscriber.complete(); - } - else { - subscriber.next(input[i++]); - if (!subscriber.closed) { - this.schedule(); - } - } - }); - }); -} -//# sourceMappingURL=scheduleArray.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleAsyncIterable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - - -function scheduleAsyncIterable(input, scheduler) { - if (!input) { - throw new Error('Iterable cannot be null'); - } - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { - var iterator = input[Symbol.asyncIterator](); - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_1__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { - iterator.next().then(function (result) { - if (result.done) { - subscriber.complete(); - } - else { - subscriber.next(result.value); - } - }); - }, 0, true); - }); - }); -} -//# sourceMappingURL=scheduleAsyncIterable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleIterable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js"); -/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js"); - - - - -function scheduleIterable(input, scheduler) { - return new _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"](function (subscriber) { - var iterator; - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { - iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_1__[/* iterator */ "a"]](); - Object(_util_executeSchedule__WEBPACK_IMPORTED_MODULE_3__[/* executeSchedule */ "a"])(subscriber, scheduler, function () { - var _a; - var value; - var done; - try { - (_a = iterator.next(), value = _a.value, done = _a.done); - } - catch (err) { - subscriber.error(err); - return; - } - if (done) { - subscriber.complete(); - } - else { - subscriber.next(value); - } - }, 0, true); - }); - return function () { return Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__[/* isFunction */ "a"])(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); }; - }); -} -//# sourceMappingURL=scheduleIterable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleObservable; }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); -/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); - - - -function scheduleObservable(input, scheduler) { - return Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(input).pipe(Object(_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__[/* subscribeOn */ "a"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_1__[/* observeOn */ "a"])(scheduler)); -} -//# sourceMappingURL=scheduleObservable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return schedulePromise; }); -/* harmony import */ var _observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js"); -/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); -/* harmony import */ var _operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); - - - -function schedulePromise(input, scheduler) { - return Object(_observable_innerFrom__WEBPACK_IMPORTED_MODULE_0__[/* innerFrom */ "a"])(input).pipe(Object(_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_2__[/* subscribeOn */ "a"])(scheduler), Object(_operators_observeOn__WEBPACK_IMPORTED_MODULE_1__[/* observeOn */ "a"])(scheduler)); -} -//# sourceMappingURL=schedulePromise.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduleReadableStreamLike; }); -/* harmony import */ var _scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js"); -/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js"); - - -function scheduleReadableStreamLike(input, scheduler) { - return Object(_scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_0__[/* scheduleAsyncIterable */ "a"])(Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_1__[/* readableStreamLikeToAsyncGenerator */ "b"])(input), scheduler); -} -//# sourceMappingURL=scheduleReadableStreamLike.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return scheduled; }); -/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js"); -/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js"); -/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js"); -/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js"); -/* harmony import */ var _scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js"); -/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js"); -/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js"); -/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js"); -/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js"); -/* harmony import */ var _util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js"); -/* harmony import */ var _util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js"); -/* harmony import */ var _util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js"); -/* harmony import */ var _scheduleReadableStreamLike__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js"); - - - - - - - - - - - - - -function scheduled(input, scheduler) { - if (input != null) { - if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_5__[/* isInteropObservable */ "a"])(input)) { - return Object(_scheduleObservable__WEBPACK_IMPORTED_MODULE_0__[/* scheduleObservable */ "a"])(input, scheduler); - } - if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_7__[/* isArrayLike */ "a"])(input)) { - return Object(_scheduleArray__WEBPACK_IMPORTED_MODULE_2__[/* scheduleArray */ "a"])(input, scheduler); - } - if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_6__[/* isPromise */ "a"])(input)) { - return Object(_schedulePromise__WEBPACK_IMPORTED_MODULE_1__[/* schedulePromise */ "a"])(input, scheduler); - } - if (Object(_util_isAsyncIterable__WEBPACK_IMPORTED_MODULE_9__[/* isAsyncIterable */ "a"])(input)) { - return Object(_scheduleAsyncIterable__WEBPACK_IMPORTED_MODULE_4__[/* scheduleAsyncIterable */ "a"])(input, scheduler); - } - if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_8__[/* isIterable */ "a"])(input)) { - return Object(_scheduleIterable__WEBPACK_IMPORTED_MODULE_3__[/* scheduleIterable */ "a"])(input, scheduler); - } - if (Object(_util_isReadableStreamLike__WEBPACK_IMPORTED_MODULE_11__[/* isReadableStreamLike */ "a"])(input)) { - return Object(_scheduleReadableStreamLike__WEBPACK_IMPORTED_MODULE_12__[/* scheduleReadableStreamLike */ "a"])(input, scheduler); - } - } - throw Object(_util_throwUnobservableError__WEBPACK_IMPORTED_MODULE_10__[/* createInvalidObservableTypeError */ "a"])(input); -} -//# sourceMappingURL=scheduled.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Action; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); - - -var Action = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(Action, _super); - function Action(scheduler, work) { - return _super.call(this) || this; - } - Action.prototype.schedule = function (state, delay) { - if (delay === void 0) { delay = 0; } - return this; - }; - return Action; -}(_Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"])); - -//# sourceMappingURL=Action.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AnimationFrameAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); -/* harmony import */ var _animationFrameProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js"); - - - -var AnimationFrameAction = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AnimationFrameAction, _super); - function AnimationFrameAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { delay = 0; } - if (delay !== null && delay > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); - } - scheduler.actions.push(this); - return scheduler._scheduled || (scheduler._scheduled = _animationFrameProvider__WEBPACK_IMPORTED_MODULE_2__[/* animationFrameProvider */ "a"].requestAnimationFrame(function () { return scheduler.flush(undefined); })); - }; - AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { delay = 0; } - if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) { - return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); - } - if (!scheduler.actions.some(function (action) { return action.id === id; })) { - _animationFrameProvider__WEBPACK_IMPORTED_MODULE_2__[/* animationFrameProvider */ "a"].cancelAnimationFrame(id); - scheduler._scheduled = undefined; - } - return undefined; - }; - return AnimationFrameAction; -}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[/* AsyncAction */ "a"])); - -//# sourceMappingURL=AnimationFrameAction.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AnimationFrameScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); - - -var AnimationFrameScheduler = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AnimationFrameScheduler, _super); - function AnimationFrameScheduler() { - return _super !== null && _super.apply(this, arguments) || this; - } - AnimationFrameScheduler.prototype.flush = function (action) { - this._active = true; - var flushId = this._scheduled; - this._scheduled = undefined; - var actions = this.actions; - var error; - action = action || actions.shift(); - do { - if ((error = action.execute(action.state, action.delay))) { - break; - } - } while ((action = actions[0]) && action.id === flushId && actions.shift()); - this._active = false; - if (error) { - while ((action = actions[0]) && action.id === flushId && actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - return AnimationFrameScheduler; -}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsyncScheduler */ "a"])); - -//# sourceMappingURL=AnimationFrameScheduler.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsapAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); -/* harmony import */ var _immediateProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js"); - - - -var AsapAction = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsapAction, _super); - function AsapAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { delay = 0; } - if (delay !== null && delay > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); - } - scheduler.actions.push(this); - return scheduler._scheduled || (scheduler._scheduled = _immediateProvider__WEBPACK_IMPORTED_MODULE_2__[/* immediateProvider */ "a"].setImmediate(scheduler.flush.bind(scheduler, undefined))); - }; - AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { delay = 0; } - if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) { - return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); - } - if (!scheduler.actions.some(function (action) { return action.id === id; })) { - _immediateProvider__WEBPACK_IMPORTED_MODULE_2__[/* immediateProvider */ "a"].clearImmediate(id); - scheduler._scheduled = undefined; - } - return undefined; - }; - return AsapAction; -}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[/* AsyncAction */ "a"])); - -//# sourceMappingURL=AsapAction.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsapScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); - - -var AsapScheduler = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsapScheduler, _super); - function AsapScheduler() { - return _super !== null && _super.apply(this, arguments) || this; - } - AsapScheduler.prototype.flush = function (action) { - this._active = true; - var flushId = this._scheduled; - this._scheduled = undefined; - var actions = this.actions; - var error; - action = action || actions.shift(); - do { - if ((error = action.execute(action.state, action.delay))) { - break; - } - } while ((action = actions[0]) && action.id === flushId && actions.shift()); - this._active = false; - if (error) { - while ((action = actions[0]) && action.id === flushId && actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - return AsapScheduler; -}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsyncScheduler */ "a"])); - -//# sourceMappingURL=AsapScheduler.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js"); -/* harmony import */ var _intervalProvider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js"); -/* harmony import */ var _util_arrRemove__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js"); - - - - -var AsyncAction = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsyncAction, _super); - function AsyncAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - _this.pending = false; - return _this; - } - AsyncAction.prototype.schedule = function (state, delay) { - if (delay === void 0) { delay = 0; } - if (this.closed) { - return this; - } - this.state = state; - var id = this.id; - var scheduler = this.scheduler; - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, delay); - } - this.pending = true; - this.delay = delay; - this.id = this.id || this.requestAsyncId(scheduler, this.id, delay); - return this; - }; - AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) { - if (delay === void 0) { delay = 0; } - return _intervalProvider__WEBPACK_IMPORTED_MODULE_2__[/* intervalProvider */ "a"].setInterval(scheduler.flush.bind(scheduler, this), delay); - }; - AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) { - if (delay === void 0) { delay = 0; } - if (delay != null && this.delay === delay && this.pending === false) { - return id; - } - _intervalProvider__WEBPACK_IMPORTED_MODULE_2__[/* intervalProvider */ "a"].clearInterval(id); - return undefined; - }; - AsyncAction.prototype.execute = function (state, delay) { - if (this.closed) { - return new Error('executing a cancelled action'); - } - this.pending = false; - var error = this._execute(state, delay); - if (error) { - return error; - } - else if (this.pending === false && this.id != null) { - this.id = this.recycleAsyncId(this.scheduler, this.id, null); - } - }; - AsyncAction.prototype._execute = function (state, _delay) { - var errored = false; - var errorValue; - try { - this.work(state); - } - catch (e) { - errored = true; - errorValue = e ? e : new Error('Scheduled action threw falsy error'); - } - if (errored) { - this.unsubscribe(); - return errorValue; - } - }; - AsyncAction.prototype.unsubscribe = function () { - if (!this.closed) { - var _a = this, id = _a.id, scheduler = _a.scheduler; - var actions = scheduler.actions; - this.work = this.state = this.scheduler = null; - this.pending = false; - Object(_util_arrRemove__WEBPACK_IMPORTED_MODULE_3__[/* arrRemove */ "a"])(actions, this); - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, null); - } - this.delay = null; - _super.prototype.unsubscribe.call(this); - } - }; - return AsyncAction; -}(_Action__WEBPACK_IMPORTED_MODULE_1__[/* Action */ "a"])); - -//# sourceMappingURL=AsyncAction.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AsyncScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Scheduler.js"); - - -var AsyncScheduler = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(AsyncScheduler, _super); - function AsyncScheduler(SchedulerAction, now) { - if (now === void 0) { now = _Scheduler__WEBPACK_IMPORTED_MODULE_1__[/* Scheduler */ "a"].now; } - var _this = _super.call(this, SchedulerAction, now) || this; - _this.actions = []; - _this._active = false; - _this._scheduled = undefined; - return _this; - } - AsyncScheduler.prototype.flush = function (action) { - var actions = this.actions; - if (this._active) { - actions.push(action); - return; - } - var error; - this._active = true; - do { - if ((error = action.execute(action.state, action.delay))) { - break; - } - } while ((action = actions.shift())); - this._active = false; - if (error) { - while ((action = actions.shift())) { - action.unsubscribe(); - } - throw error; - } - }; - return AsyncScheduler; -}(_Scheduler__WEBPACK_IMPORTED_MODULE_1__[/* Scheduler */ "a"])); - -//# sourceMappingURL=AsyncScheduler.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueueAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); - - -var QueueAction = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(QueueAction, _super); - function QueueAction(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - QueueAction.prototype.schedule = function (state, delay) { - if (delay === void 0) { delay = 0; } - if (delay > 0) { - return _super.prototype.schedule.call(this, state, delay); - } - this.delay = delay; - this.state = state; - this.scheduler.flush(this); - return this; - }; - QueueAction.prototype.execute = function (state, delay) { - return (delay > 0 || this.closed) ? - _super.prototype.execute.call(this, state, delay) : - this._execute(state, delay); - }; - QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { delay = 0; } - if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); - } - return scheduler.flush(this); - }; - return QueueAction; -}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[/* AsyncAction */ "a"])); - -//# sourceMappingURL=QueueAction.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return QueueScheduler; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); - - -var QueueScheduler = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(QueueScheduler, _super); - function QueueScheduler() { - return _super !== null && _super.apply(this, arguments) || this; - } - return QueueScheduler; -}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsyncScheduler */ "a"])); - -//# sourceMappingURL=QueueScheduler.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return VirtualTimeScheduler; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return VirtualAction; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); - - - - -var VirtualTimeScheduler = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(VirtualTimeScheduler, _super); - function VirtualTimeScheduler(schedulerActionCtor, maxFrames) { - if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; } - if (maxFrames === void 0) { maxFrames = Infinity; } - var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this; - _this.maxFrames = maxFrames; - _this.frame = 0; - _this.index = -1; - return _this; - } - VirtualTimeScheduler.prototype.flush = function () { - var _a = this, actions = _a.actions, maxFrames = _a.maxFrames; - var error; - var action; - while ((action = actions[0]) && action.delay <= maxFrames) { - actions.shift(); - this.frame = action.delay; - if ((error = action.execute(action.state, action.delay))) { - break; - } - } - if (error) { - while ((action = actions.shift())) { - action.unsubscribe(); - } - throw error; - } - }; - VirtualTimeScheduler.frameTimeFactor = 10; - return VirtualTimeScheduler; -}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_3__[/* AsyncScheduler */ "a"])); - -var VirtualAction = (function (_super) { - Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __extends */ "e"])(VirtualAction, _super); - function VirtualAction(scheduler, work, index) { - if (index === void 0) { index = (scheduler.index += 1); } - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - _this.index = index; - _this.active = true; - _this.index = scheduler.index = index; - return _this; - } - VirtualAction.prototype.schedule = function (state, delay) { - if (delay === void 0) { delay = 0; } - if (Number.isFinite(delay)) { - if (!this.id) { - return _super.prototype.schedule.call(this, state, delay); - } - this.active = false; - var action = new VirtualAction(this.scheduler, this.work); - this.add(action); - return action.schedule(state, delay); - } - else { - return _Subscription__WEBPACK_IMPORTED_MODULE_2__[/* Subscription */ "b"].EMPTY; - } - }; - VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { delay = 0; } - this.delay = scheduler.frame + delay; - var actions = scheduler.actions; - actions.push(this); - actions.sort(VirtualAction.sortActions); - return true; - }; - VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) { - if (delay === void 0) { delay = 0; } - return undefined; - }; - VirtualAction.prototype._execute = function (state, delay) { - if (this.active === true) { - return _super.prototype._execute.call(this, state, delay); - } - }; - VirtualAction.sortActions = function (a, b) { - if (a.delay === b.delay) { - if (a.index === b.index) { - return 0; - } - else if (a.index > b.index) { - return 1; - } - else { - return -1; - } - } - else if (a.delay > b.delay) { - return 1; - } - else { - return -1; - } - }; - return VirtualAction; -}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__[/* AsyncAction */ "a"])); - -//# sourceMappingURL=VirtualTimeScheduler.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return animationFrameScheduler; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return animationFrame; }); -/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js"); -/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js"); - - -var animationFrameScheduler = new _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AnimationFrameScheduler */ "a"](_AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__[/* AnimationFrameAction */ "a"]); -var animationFrame = animationFrameScheduler; -//# sourceMappingURL=animationFrame.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return animationFrameProvider; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subscription.js"); - - -var animationFrameProvider = { - schedule: function (callback) { - var request = requestAnimationFrame; - var cancel = cancelAnimationFrame; - var delegate = animationFrameProvider.delegate; - if (delegate) { - request = delegate.requestAnimationFrame; - cancel = delegate.cancelAnimationFrame; - } - var handle = request(function (timestamp) { - cancel = undefined; - callback(timestamp); - }); - return new _Subscription__WEBPACK_IMPORTED_MODULE_1__[/* Subscription */ "b"](function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); }); - }, - requestAnimationFrame: function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var delegate = animationFrameProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); - }, - cancelAnimationFrame: function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var delegate = animationFrameProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); - }, - delegate: undefined, -}; -//# sourceMappingURL=animationFrameProvider.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/asap.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return asapScheduler; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return asap; }); -/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js"); -/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js"); - - -var asapScheduler = new _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsapScheduler */ "a"](_AsapAction__WEBPACK_IMPORTED_MODULE_0__[/* AsapAction */ "a"]); -var asap = asapScheduler; -//# sourceMappingURL=asap.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return asyncScheduler; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return async; }); -/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js"); -/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js"); - - -var asyncScheduler = new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__[/* AsyncScheduler */ "a"](_AsyncAction__WEBPACK_IMPORTED_MODULE_0__[/* AsyncAction */ "a"]); -var async = asyncScheduler; -//# sourceMappingURL=async.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return dateTimestampProvider; }); -var dateTimestampProvider = { - now: function () { - return (dateTimestampProvider.delegate || Date).now(); - }, - delegate: undefined, -}; -//# sourceMappingURL=dateTimestampProvider.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return immediateProvider; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/Immediate.js"); - - -var setImmediate = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__[/* Immediate */ "a"].setImmediate, clearImmediate = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__[/* Immediate */ "a"].clearImmediate; -var immediateProvider = { - setImmediate: function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var delegate = immediateProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); - }, - clearImmediate: function (handle) { - var delegate = immediateProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle); - }, - delegate: undefined, -}; -//# sourceMappingURL=immediateProvider.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return intervalProvider; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); - -var intervalProvider = { - setInterval: function (handler, timeout) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - var delegate = intervalProvider.delegate; - if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) { - return delegate.setInterval.apply(delegate, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); - } - return setInterval.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); - }, - clearInterval: function (handle) { - var delegate = intervalProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle); - }, - delegate: undefined, -}; -//# sourceMappingURL=intervalProvider.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return performanceTimestampProvider; }); -var performanceTimestampProvider = { - now: function () { - return (performanceTimestampProvider.delegate || performance).now(); - }, - delegate: undefined, -}; -//# sourceMappingURL=performanceTimestampProvider.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/queue.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return queueScheduler; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return queue; }); -/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js"); -/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js"); - - -var queueScheduler = new _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__[/* QueueScheduler */ "a"](_QueueAction__WEBPACK_IMPORTED_MODULE_0__[/* QueueAction */ "a"]); -var queue = queueScheduler; -//# sourceMappingURL=queue.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return timeoutProvider; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); - -var timeoutProvider = { - setTimeout: function (handler, timeout) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - var delegate = timeoutProvider.delegate; - if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) { - return delegate.setTimeout.apply(delegate, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); - } - return setTimeout.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([handler, timeout], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))); - }, - clearTimeout: function (handle) { - var delegate = timeoutProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle); - }, - delegate: undefined, -}; -//# sourceMappingURL=timeoutProvider.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* unused harmony export getSymbolIterator */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return iterator; }); -function getSymbolIterator() { - if (typeof Symbol !== 'function' || !Symbol.iterator) { - return '@@iterator'; - } - return Symbol.iterator; -} -var iterator = getSymbolIterator(); -//# sourceMappingURL=iterator.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return observable; }); -var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })(); -//# sourceMappingURL=observable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ArgumentOutOfRangeError; }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); - -var ArgumentOutOfRangeError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { - return function ArgumentOutOfRangeErrorImpl() { - _super(this); - this.name = 'ArgumentOutOfRangeError'; - this.message = 'argument out of range'; - }; -}); -//# sourceMappingURL=ArgumentOutOfRangeError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EmptyError; }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); - -var EmptyError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { return function EmptyErrorImpl() { - _super(this); - this.name = 'EmptyError'; - this.message = 'no elements in sequence'; -}; }); -//# sourceMappingURL=EmptyError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/Immediate.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Immediate; }); -/* unused harmony export TestTools */ -var nextHandle = 1; -var resolved; -var activeHandles = {}; -function findAndClearHandle(handle) { - if (handle in activeHandles) { - delete activeHandles[handle]; - return true; - } - return false; -} -var Immediate = { - setImmediate: function (cb) { - var handle = nextHandle++; - activeHandles[handle] = true; - if (!resolved) { - resolved = Promise.resolve(); - } - resolved.then(function () { return findAndClearHandle(handle) && cb(); }); - return handle; - }, - clearImmediate: function (handle) { - findAndClearHandle(handle); - }, -}; -var TestTools = { - pending: function () { - return Object.keys(activeHandles).length; - } -}; -//# sourceMappingURL=Immediate.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return NotFoundError; }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); - -var NotFoundError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { - return function NotFoundErrorImpl(message) { - _super(this); - this.name = 'NotFoundError'; - this.message = message; - }; -}); -//# sourceMappingURL=NotFoundError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ObjectUnsubscribedError; }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); - -var ObjectUnsubscribedError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { - return function ObjectUnsubscribedErrorImpl() { - _super(this); - this.name = 'ObjectUnsubscribedError'; - this.message = 'object unsubscribed'; - }; -}); -//# sourceMappingURL=ObjectUnsubscribedError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SequenceError; }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); - -var SequenceError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { - return function SequenceErrorImpl(message) { - _super(this); - this.name = 'SequenceError'; - this.message = message; - }; -}); -//# sourceMappingURL=SequenceError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return UnsubscriptionError; }); -/* harmony import */ var _createErrorClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js"); - -var UnsubscriptionError = Object(_createErrorClass__WEBPACK_IMPORTED_MODULE_0__[/* createErrorClass */ "a"])(function (_super) { - return function UnsubscriptionErrorImpl(errors) { - _super(this); - this.message = errors - ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n ') - : ''; - this.name = 'UnsubscriptionError'; - this.errors = errors; - }; -}); -//# sourceMappingURL=UnsubscriptionError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/args.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return popResultSelector; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return popScheduler; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return popNumber; }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); -/* harmony import */ var _isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js"); - - -function last(arr) { - return arr[arr.length - 1]; -} -function popResultSelector(args) { - return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(last(args)) ? args.pop() : undefined; -} -function popScheduler(args) { - return Object(_isScheduler__WEBPACK_IMPORTED_MODULE_1__[/* isScheduler */ "a"])(last(args)) ? args.pop() : undefined; -} -function popNumber(args, defaultValue) { - return typeof last(args) === 'number' ? args.pop() : defaultValue; -} -//# sourceMappingURL=args.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return argsArgArrayOrObject; }); -var isArray = Array.isArray; -var getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys; -function argsArgArrayOrObject(args) { - if (args.length === 1) { - var first_1 = args[0]; - if (isArray(first_1)) { - return { args: first_1, keys: null }; - } - if (isPOJO(first_1)) { - var keys = getKeys(first_1); - return { - args: keys.map(function (key) { return first_1[key]; }), - keys: keys, - }; - } - } - return { args: args, keys: null }; -} -function isPOJO(obj) { - return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto; -} -//# sourceMappingURL=argsArgArrayOrObject.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return argsOrArgArray; }); -var isArray = Array.isArray; -function argsOrArgArray(args) { - return args.length === 1 && isArray(args[0]) ? args[0] : args; -} -//# sourceMappingURL=argsOrArgArray.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return arrRemove; }); -function arrRemove(arr, item) { - if (arr) { - var index = arr.indexOf(item); - 0 <= index && arr.splice(index, 1); - } -} -//# sourceMappingURL=arrRemove.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createErrorClass; }); -function createErrorClass(createImpl) { - var _super = function (instance) { - Error.call(instance); - instance.stack = new Error().stack; - }; - var ctorFunc = createImpl(_super); - ctorFunc.prototype = Object.create(Error.prototype); - ctorFunc.prototype.constructor = ctorFunc; - return ctorFunc; -} -//# sourceMappingURL=createErrorClass.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/createObject.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createObject; }); -function createObject(keys, values) { - return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {}); -} -//# sourceMappingURL=createObject.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return errorContext; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return captureError; }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); - -var context = null; -function errorContext(cb) { - if (_config__WEBPACK_IMPORTED_MODULE_0__[/* config */ "a"].useDeprecatedSynchronousErrorHandling) { - var isRoot = !context; - if (isRoot) { - context = { errorThrown: false, error: null }; - } - cb(); - if (isRoot) { - var _a = context, errorThrown = _a.errorThrown, error = _a.error; - context = null; - if (errorThrown) { - throw error; - } - } - } - else { - cb(); - } -} -function captureError(err) { - if (_config__WEBPACK_IMPORTED_MODULE_0__[/* config */ "a"].useDeprecatedSynchronousErrorHandling && context) { - context.errorThrown = true; - context.error = err; - } -} -//# sourceMappingURL=errorContext.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return executeSchedule; }); -function executeSchedule(parentSubscription, scheduler, work, delay, repeat) { - if (delay === void 0) { delay = 0; } - if (repeat === void 0) { repeat = false; } - var scheduleSubscription = scheduler.schedule(function () { - work(); - if (repeat) { - parentSubscription.add(this.schedule(null, delay)); - } - else { - this.unsubscribe(); - } - }, delay); - parentSubscription.add(scheduleSubscription); - if (!repeat) { - return scheduleSubscription; - } -} -//# sourceMappingURL=executeSchedule.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/identity.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return identity; }); -function identity(x) { - return x; -} -//# sourceMappingURL=identity.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isArrayLike; }); -var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; }); -//# sourceMappingURL=isArrayLike.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isAsyncIterable; }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - -function isAsyncIterable(obj) { - return Symbol.asyncIterator && Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]); -} -//# sourceMappingURL=isAsyncIterable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isDate.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isValidDate; }); -function isValidDate(value) { - return value instanceof Date && !isNaN(value); -} -//# sourceMappingURL=isDate.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isFunction; }); -function isFunction(value) { - return typeof value === 'function'; -} -//# sourceMappingURL=isFunction.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isInteropObservable; }); -/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js"); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function isInteropObservable(input) { - return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(input[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__[/* observable */ "a"]]); -} -//# sourceMappingURL=isInteropObservable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isIterable; }); -/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js"); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function isIterable(input) { - return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(input === null || input === void 0 ? void 0 : input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__[/* iterator */ "a"]]); -} -//# sourceMappingURL=isIterable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isObservable.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isObservable; }); -/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Observable.js"); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function isObservable(obj) { - return !!obj && (obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__[/* Observable */ "a"] || (Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(obj.lift) && Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(obj.subscribe))); -} -//# sourceMappingURL=isObservable.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isPromise; }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - -function isPromise(value) { - return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(value === null || value === void 0 ? void 0 : value.then); -} -//# sourceMappingURL=isPromise.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return readableStreamLikeToAsyncGenerator; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isReadableStreamLike; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - - -function readableStreamLikeToAsyncGenerator(readableStream) { - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __asyncGenerator */ "a"])(this, arguments, function readableStreamLikeToAsyncGenerator_1() { - var reader, _a, value, done; - return Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __generator */ "f"])(this, function (_b) { - switch (_b.label) { - case 0: - reader = readableStream.getReader(); - _b.label = 1; - case 1: - _b.trys.push([1, , 9, 10]); - _b.label = 2; - case 2: - if (false) {} - return [4, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __await */ "c"])(reader.read())]; - case 3: - _a = _b.sent(), value = _a.value, done = _a.done; - if (!done) return [3, 5]; - return [4, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __await */ "c"])(void 0)]; - case 4: return [2, _b.sent()]; - case 5: return [4, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __await */ "c"])(value)]; - case 6: return [4, _b.sent()]; - case 7: - _b.sent(); - return [3, 2]; - case 8: return [3, 10]; - case 9: - reader.releaseLock(); - return [7]; - case 10: return [2]; - } - }); - }); -} -function isReadableStreamLike(obj) { - return Object(_isFunction__WEBPACK_IMPORTED_MODULE_1__[/* isFunction */ "a"])(obj === null || obj === void 0 ? void 0 : obj.getReader); -} -//# sourceMappingURL=isReadableStreamLike.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isScheduler; }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - -function isScheduler(value) { - return value && Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(value.schedule); -} -//# sourceMappingURL=isScheduler.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/lift.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return hasLift; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return operate; }); -/* harmony import */ var _isFunction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js"); - -function hasLift(source) { - return Object(_isFunction__WEBPACK_IMPORTED_MODULE_0__[/* isFunction */ "a"])(source === null || source === void 0 ? void 0 : source.lift); -} -function operate(init) { - return function (source) { - if (hasLift(source)) { - return source.lift(function (liftedSource) { - try { - return init(liftedSource, this); - } - catch (err) { - this.error(err); - } - }); - } - throw new TypeError('Unable to lift unknown Observable type'); - }; -} -//# sourceMappingURL=lift.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return mapOneOrManyArgs; }); -/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/node_modules/tslib/tslib.es6.js"); -/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); - - -var isArray = Array.isArray; -function callOrApply(fn, args) { - return isArray(args) ? fn.apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __spreadArray */ "h"])([], Object(tslib__WEBPACK_IMPORTED_MODULE_0__[/* __read */ "g"])(args))) : fn(args); -} -function mapOneOrManyArgs(fn) { - return Object(_operators_map__WEBPACK_IMPORTED_MODULE_1__[/* map */ "a"])(function (args) { return callOrApply(fn, args); }); -} -//# sourceMappingURL=mapOneOrManyArgs.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/noop.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return noop; }); -function noop() { } -//# sourceMappingURL=noop.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/not.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return not; }); -function not(pred, thisArg) { - return function (value, index) { return !pred.call(thisArg, value, index); }; -} -//# sourceMappingURL=not.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/pipe.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pipe; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return pipeFromArray; }); -/* harmony import */ var _identity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/util/identity.js"); - -function pipe() { - var fns = []; - for (var _i = 0; _i < arguments.length; _i++) { - fns[_i] = arguments[_i]; - } - return pipeFromArray(fns); -} -function pipeFromArray(fns) { - if (fns.length === 0) { - return _identity__WEBPACK_IMPORTED_MODULE_0__[/* identity */ "a"]; - } - if (fns.length === 1) { - return fns[0]; - } - return function piped(input) { - return fns.reduce(function (prev, fn) { return fn(prev); }, input); - }; -} -//# sourceMappingURL=pipe.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return reportUnhandledError; }); -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/config.js"); -/* harmony import */ var _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js"); - - -function reportUnhandledError(err) { - _scheduler_timeoutProvider__WEBPACK_IMPORTED_MODULE_1__[/* timeoutProvider */ "a"].setTimeout(function () { - var onUnhandledError = _config__WEBPACK_IMPORTED_MODULE_0__[/* config */ "a"].onUnhandledError; - if (onUnhandledError) { - onUnhandledError(err); - } - else { - throw err; - } - }); -} -//# sourceMappingURL=reportUnhandledError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createInvalidObservableTypeError; }); -function createInvalidObservableTypeError(input) { - return new TypeError("You provided " + (input !== null && typeof input === 'object' ? 'an invalid object' : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable."); -} -//# sourceMappingURL=throwUnobservableError.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/dist/esm5/operators/index.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/audit.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["a"]; }); - -/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/auditTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["a"]; }); - -/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["a"]; }); - -/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["a"]; }); - -/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["a"]; }); - -/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferToggle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["a"]; }); - -/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/bufferWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["a"]; }); - -/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["a"]; }); - -/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["a"]; }); - -/* harmony import */ var _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestAll", function() { return _internal_operators_combineLatestAll__WEBPACK_IMPORTED_MODULE_9__["a"]; }); - -/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_10__["a"]; }); - -/* harmony import */ var _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatestWith", function() { return _internal_operators_combineLatestWith__WEBPACK_IMPORTED_MODULE_11__["a"]; }); - -/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_12__["a"]; }); - -/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_13__["a"]; }); - -/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_14__["a"]; }); - -/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_15__["a"]; }); - -/* harmony import */ var _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/concatWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatWith", function() { return _internal_operators_concatWith__WEBPACK_IMPORTED_MODULE_16__["a"]; }); - -/* harmony import */ var _internal_operators_connect__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/connect.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "connect", function() { return _internal_operators_connect__WEBPACK_IMPORTED_MODULE_17__["a"]; }); - -/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/count.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_18__["a"]; }); - -/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/debounce.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_19__["a"]; }); - -/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_20__["a"]; }); - -/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_21__["a"]; }); - -/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_22__["a"]; }); - -/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_23__["a"]; }); - -/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/dematerialize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_24__["a"]; }); - -/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinct.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_25__["a"]; }); - -/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_26__["a"]; }); - -/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilKeyChanged.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_27__["a"]; }); - -/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/elementAt.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_28__["a"]; }); - -/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/endWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_29__["a"]; }); - -/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/every.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_30__["a"]; }); - -/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaust.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_31__["a"]; }); - -/* harmony import */ var _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustAll", function() { return _internal_operators_exhaustAll__WEBPACK_IMPORTED_MODULE_32__["a"]; }); - -/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/exhaustMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_33__["a"]; }); - -/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/expand.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_34__["a"]; }); - -/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/filter.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_35__["a"]; }); - -/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/finalize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_36__["a"]; }); - -/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/find.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_37__["b"]; }); - -/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/findIndex.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_38__["a"]; }); - -/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/first.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_39__["a"]; }); - -/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/groupBy.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_40__["a"]; }); - -/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_41__["a"]; }); - -/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/isEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_42__["a"]; }); - -/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/last.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_43__["a"]; }); - -/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/map.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_44__["a"]; }); - -/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_45__["a"]; }); - -/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/materialize.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_46__["a"]; }); - -/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/max.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_47__["a"]; }); - -/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/merge.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_48__["a"]; }); - -/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_49__["a"]; }); - -/* harmony import */ var _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/flatMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_flatMap__WEBPACK_IMPORTED_MODULE_50__["a"]; }); - -/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_51__["a"]; }); - -/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_52__["a"]; }); - -/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeScan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_53__["a"]; }); - -/* harmony import */ var _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/mergeWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return _internal_operators_mergeWith__WEBPACK_IMPORTED_MODULE_54__["a"]; }); - -/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/min.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_55__["a"]; }); - -/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/multicast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_56__["a"]; }); - -/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_57__["a"]; }); - -/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/onErrorResumeNext.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_58__["a"]; }); - -/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_59__["a"]; }); - -/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/partition.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_60__["a"]; }); - -/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/pluck.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_61__["a"]; }); - -/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publish.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_62__["a"]; }); - -/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishBehavior.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_63__["a"]; }); - -/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_64__["a"]; }); - -/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/publishReplay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_65__["a"]; }); - -/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/race.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_66__["a"]; }); - -/* harmony import */ var _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/raceWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "raceWith", function() { return _internal_operators_raceWith__WEBPACK_IMPORTED_MODULE_67__["a"]; }); - -/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/reduce.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_68__["a"]; }); - -/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/repeat.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_69__["a"]; }); - -/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/repeatWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_70__["a"]; }); - -/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/retry.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_71__["a"]; }); - -/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/retryWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_72__["a"]; }); - -/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_73__["a"]; }); - -/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sample.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_74__["a"]; }); - -/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sampleTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_75__["a"]; }); - -/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/scan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_76__["a"]; }); - -/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/sequenceEqual.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_77__["a"]; }); - -/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/share.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_78__["a"]; }); - -/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_79__["a"]; }); - -/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/single.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_80__["a"]; }); - -/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_81__["a"]; }); - -/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_82__["a"]; }); - -/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipUntil.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_83__["a"]; }); - -/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_84__["a"]; }); - -/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/startWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_85__["a"]; }); - -/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_86__["a"]; }); - -/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_87__["a"]; }); - -/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_88__["a"]; }); - -/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchMapTo.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_89__["a"]; }); - -/* harmony import */ var _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/switchScan.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchScan", function() { return _internal_operators_switchScan__WEBPACK_IMPORTED_MODULE_90__["a"]; }); - -/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/take.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_91__["a"]; }); - -/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeLast.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_92__["a"]; }); - -/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_93__["a"]; }); - -/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/takeWhile.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_94__["a"]; }); - -/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/tap.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_95__["a"]; }); - -/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_96__["b"]; }); - -/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_97__["a"]; }); - -/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_98__["a"]; }); - -/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeInterval.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_99__["a"]; }); - -/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_100__["b"]; }); - -/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timeoutWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_101__["a"]; }); - -/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/timestamp.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_102__["a"]; }); - -/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/toArray.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_103__["a"]; }); - -/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/window.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_104__["a"]; }); - -/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowCount.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_105__["a"]; }); - -/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowTime.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_106__["a"]; }); - -/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowToggle.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_107__["a"]; }); - -/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/windowWhen.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_108__["a"]; }); - -/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_109__["a"]; }); - -/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zip.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_110__["a"]; }); - -/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zipAll.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_111__["a"]; }); - -/* harmony import */ var _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/zipWith.js"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return _internal_operators_zipWith__WEBPACK_IMPORTED_MODULE_112__["a"]; }); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//# sourceMappingURL=index.js.map - -/***/ }), - -/***/ "../../node_modules/rxjs/node_modules/tslib/tslib.es6.js": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return __extends; }); -/* unused harmony export __assign */ -/* unused harmony export __rest */ -/* unused harmony export __decorate */ -/* unused harmony export __param */ -/* unused harmony export __metadata */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return __awaiter; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return __generator; }); -/* unused harmony export __createBinding */ -/* unused harmony export __exportStar */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return __values; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return __read; }); -/* unused harmony export __spread */ -/* unused harmony export __spreadArrays */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return __spreadArray; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return __await; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __asyncGenerator; }); -/* unused harmony export __asyncDelegator */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __asyncValues; }); -/* unused harmony export __makeTemplateObject */ -/* unused harmony export __importStar */ -/* unused harmony export __importDefault */ -/* unused harmony export __classPrivateFieldGet */ -/* unused harmony export __classPrivateFieldSet */ -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -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. -***************************************************************************** */ -/* 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - 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 && Object.prototype.propertyIsEnumerable.call(s, p[i])) - 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) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - 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) : adopt(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 }; - } -} - -var __createBinding = Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -}); - -function __exportStar(m, o) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); -} - -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} - -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; -} - -/** @deprecated */ -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -/** @deprecated */ -function __spreadArrays() { - for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; - for (var r = Array(s), k = 0, i = 0; i < il; i++) - for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) - r[k] = a[j]; - return r; -} - -function __spreadArray(to, from, pack) { - if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { - if (ar || !(i in from)) { - if (!ar) ar = Array.prototype.slice.call(from, 0, i); - ar[i] = from[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from)); -} - -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; -}; - -var __setModuleDefault = Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - -function __classPrivateFieldGet(receiver, state, kind, f) { - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); - return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); -} - -function __classPrivateFieldSet(receiver, state, value, kind, f) { - if (kind === "m") throw new TypeError("Private method is not writable"); - if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); - if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); - return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; -} - - -/***/ }), - -/***/ "../../node_modules/safe-regex/index.js": -/***/ (function(module, exports, __webpack_require__) { - -var parse = __webpack_require__("../../node_modules/ret/lib/index.js"); -var types = parse.types; - -module.exports = function (re, opts) { - if (!opts) opts = {}; - var replimit = opts.limit === undefined ? 25 : opts.limit; - - if (isRegExp(re)) re = re.source; - else if (typeof re !== 'string') re = String(re); - - try { re = parse(re) } - catch (err) { return false } - - var reps = 0; - return (function walk (node, starHeight) { - if (node.type === types.REPETITION) { - starHeight ++; - reps ++; - if (starHeight > 1) return false; - if (reps > replimit) return false; - } - - if (node.options) { - for (var i = 0, len = node.options.length; i < len; i++) { - var ok = walk({ stack: node.options[i] }, starHeight); - if (!ok) return false; - } - } - var stack = node.stack || (node.value && node.value.stack); - if (!stack) return true; - - for (var i = 0; i < stack.length; i++) { - var ok = walk(stack[i], starHeight); - if (!ok) return false; - } - - return true; - })(re, 0); -}; - -function isRegExp (x) { - return {}.toString.call(x) === '[object RegExp]'; -} - - -/***/ }), - -/***/ "../../node_modules/shebang-command/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const shebangRegex = __webpack_require__("../../node_modules/shebang-regex/index.js"); - -module.exports = (string = '') => { - const match = string.match(shebangRegex); - - if (!match) { - return null; - } - - const [path, argument] = match[0].replace(/#! ?/, '').split(' '); - const binary = path.split('/').pop(); - - if (binary === 'env') { - return argument; - } - - return argument ? `${binary} ${argument}` : binary; -}; - - -/***/ }), - -/***/ "../../node_modules/shebang-regex/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = /^#!(.*)/; - - -/***/ }), - -/***/ "../../node_modules/signal-exit/index.js": -/***/ (function(module, exports, __webpack_require__) { - -// Note: since nyc uses this module to output coverage, any lines -// that are in the direct sync flow of nyc's outputCoverage are -// ignored, since we can never get coverage for them. -// grab a reference to node's real process object right away -var process = global.process - -const processOk = function (process) { - return process && - typeof process === 'object' && - typeof process.removeListener === 'function' && - typeof process.emit === 'function' && - typeof process.reallyExit === 'function' && - typeof process.listeners === 'function' && - typeof process.kill === 'function' && - typeof process.pid === 'number' && - typeof process.on === 'function' -} - -// some kind of non-node environment, just no-op -/* istanbul ignore if */ -if (!processOk(process)) { - module.exports = function () { - return function () {} - } -} else { - var assert = __webpack_require__("assert") - var signals = __webpack_require__("../../node_modules/signal-exit/signals.js") - var isWin = /^win/i.test(process.platform) - - var EE = __webpack_require__("events") - /* istanbul ignore if */ - if (typeof EE !== 'function') { - EE = EE.EventEmitter - } - - var emitter - if (process.__signal_exit_emitter__) { - emitter = process.__signal_exit_emitter__ - } else { - emitter = process.__signal_exit_emitter__ = new EE() - emitter.count = 0 - emitter.emitted = {} - } - - // Because this emitter is a global, we have to check to see if a - // previous version of this library failed to enable infinite listeners. - // I know what you're about to say. But literally everything about - // signal-exit is a compromise with evil. Get used to it. - if (!emitter.infinite) { - emitter.setMaxListeners(Infinity) - emitter.infinite = true - } - - module.exports = function (cb, opts) { - /* istanbul ignore if */ - if (!processOk(global.process)) { - return function () {} - } - assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler') - - if (loaded === false) { - load() - } - - var ev = 'exit' - if (opts && opts.alwaysLast) { - ev = 'afterexit' - } - - var remove = function () { - emitter.removeListener(ev, cb) - if (emitter.listeners('exit').length === 0 && - emitter.listeners('afterexit').length === 0) { - unload() - } - } - emitter.on(ev, cb) - - return remove - } - - var unload = function unload () { - if (!loaded || !processOk(global.process)) { - return - } - loaded = false - - signals.forEach(function (sig) { - try { - process.removeListener(sig, sigListeners[sig]) - } catch (er) {} - }) - process.emit = originalProcessEmit - process.reallyExit = originalProcessReallyExit - emitter.count -= 1 - } - module.exports.unload = unload - - var emit = function emit (event, code, signal) { - /* istanbul ignore if */ - if (emitter.emitted[event]) { - return - } - emitter.emitted[event] = true - emitter.emit(event, code, signal) - } - - // { : , ... } - var sigListeners = {} - signals.forEach(function (sig) { - sigListeners[sig] = function listener () { - /* istanbul ignore if */ - if (!processOk(global.process)) { - return - } - // If there are no other listeners, an exit is coming! - // Simplest way: remove us and then re-send the signal. - // We know that this will kill the process, so we can - // safely emit now. - var listeners = process.listeners(sig) - if (listeners.length === emitter.count) { - unload() - emit('exit', null, sig) - /* istanbul ignore next */ - emit('afterexit', null, sig) - /* istanbul ignore next */ - if (isWin && sig === 'SIGHUP') { - // "SIGHUP" throws an `ENOSYS` error on Windows, - // so use a supported signal instead - sig = 'SIGINT' - } - /* istanbul ignore next */ - process.kill(process.pid, sig) - } - } - }) - - module.exports.signals = function () { - return signals - } - - var loaded = false - - var load = function load () { - if (loaded || !processOk(global.process)) { - return - } - loaded = true - - // This is the number of onSignalExit's that are in play. - // It's important so that we can count the correct number of - // listeners on signals, and don't wait for the other one to - // handle it instead of us. - emitter.count += 1 - - signals = signals.filter(function (sig) { - try { - process.on(sig, sigListeners[sig]) - return true - } catch (er) { - return false - } - }) - - process.emit = processEmit - process.reallyExit = processReallyExit - } - module.exports.load = load - - var originalProcessReallyExit = process.reallyExit - var processReallyExit = function processReallyExit (code) { - /* istanbul ignore if */ - if (!processOk(global.process)) { - return - } - process.exitCode = code || /* istanbul ignore next */ 0 - emit('exit', process.exitCode, null) - /* istanbul ignore next */ - emit('afterexit', process.exitCode, null) - /* istanbul ignore next */ - originalProcessReallyExit.call(process, process.exitCode) - } - - var originalProcessEmit = process.emit - var processEmit = function processEmit (ev, arg) { - if (ev === 'exit' && processOk(global.process)) { - /* istanbul ignore else */ - if (arg !== undefined) { - process.exitCode = arg - } - var ret = originalProcessEmit.apply(this, arguments) - /* istanbul ignore next */ - emit('exit', process.exitCode, null) - /* istanbul ignore next */ - emit('afterexit', process.exitCode, null) - /* istanbul ignore next */ - return ret - } else { - return originalProcessEmit.apply(this, arguments) - } - } -} - - -/***/ }), - -/***/ "../../node_modules/signal-exit/signals.js": -/***/ (function(module, exports) { - -// This is not the set of all possible signals. -// -// It IS, however, the set of all signals that trigger -// an exit on either Linux or BSD systems. Linux is a -// superset of the signal names supported on BSD, and -// the unknown signals just fail to register, so we can -// catch that easily enough. -// -// Don't bother with SIGKILL. It's uncatchable, which -// means that we can't fire any callbacks anyway. -// -// If a user does happen to register a handler on a non- -// fatal signal like SIGWINCH or something, and then -// exit, it'll end up firing `process.emit('exit')`, so -// the handler will be fired anyway. -// -// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised -// artificially, inherently leave the process in a -// state from which it is not safe to try and enter JS -// listeners. -module.exports = [ - 'SIGABRT', - 'SIGALRM', - 'SIGHUP', - 'SIGINT', - 'SIGTERM' -] - -if (process.platform !== 'win32') { - module.exports.push( - 'SIGVTALRM', - 'SIGXCPU', - 'SIGXFSZ', - 'SIGUSR2', - 'SIGTRAP', - 'SIGSYS', - 'SIGQUIT', - 'SIGIOT' - // should detect profiler and enable/disable accordingly. - // see #21 - // 'SIGPROF' - ) -} - -if (process.platform === 'linux') { - module.exports.push( - 'SIGIO', - 'SIGPOLL', - 'SIGPWR', - 'SIGSTKFLT', - 'SIGUNUSED' - ) -} - - -/***/ }), - -/***/ "../../node_modules/slash/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -module.exports = path => { - const isExtendedLengthPath = /^\\\\\?\\/.test(path); - const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex - - if (isExtendedLengthPath || hasNonAscii) { - return path; - } - - return path.replace(/\\/g, '/'); -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon-node/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isObject = __webpack_require__("../../node_modules/isobject/index.js"); -var define = __webpack_require__("../../node_modules/snapdragon-node/node_modules/define-property/index.js"); -var utils = __webpack_require__("../../node_modules/snapdragon-util/index.js"); -var ownNames; - -/** - * Create a new AST `Node` with the given `val` and `type`. - * - * ```js - * var node = new Node('*', 'Star'); - * var node = new Node({type: 'star', val: '*'}); - * ``` - * @name Node - * @param {String|Object} `val` Pass a matched substring, or an object to merge onto the node. - * @param {String} `type` The node type to use when `val` is a string. - * @return {Object} node instance - * @api public - */ - -function Node(val, type, parent) { - if (typeof type !== 'string') { - parent = type; - type = null; - } - - define(this, 'parent', parent); - define(this, 'isNode', true); - define(this, 'expect', null); - - if (typeof type !== 'string' && isObject(val)) { - lazyKeys(); - var keys = Object.keys(val); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (ownNames.indexOf(key) === -1) { - this[key] = val[key]; - } - } - } else { - this.type = type; - this.val = val; - } -} - -/** - * Returns true if the given value is a node. - * - * ```js - * var Node = require('snapdragon-node'); - * var node = new Node({type: 'foo'}); - * console.log(Node.isNode(node)); //=> true - * console.log(Node.isNode({})); //=> false - * ``` - * @param {Object} `node` - * @returns {Boolean} - * @api public - */ - -Node.isNode = function(node) { - return utils.isNode(node); -}; - -/** - * Define a non-enumberable property on the node instance. - * Useful for adding properties that shouldn't be extended - * or visible during debugging. - * - * ```js - * var node = new Node(); - * node.define('foo', 'something non-enumerable'); - * ``` - * @param {String} `name` - * @param {any} `val` - * @return {Object} returns the node instance - * @api public - */ - -Node.prototype.define = function(name, val) { - define(this, name, val); - return this; -}; - -/** - * Returns true if `node.val` is an empty string, or `node.nodes` does - * not contain any non-empty text nodes. - * - * ```js - * var node = new Node({type: 'text'}); - * node.isEmpty(); //=> true - * node.val = 'foo'; - * node.isEmpty(); //=> false - * ``` - * @param {Function} `fn` (optional) Filter function that is called on `node` and/or child nodes. `isEmpty` will return false immediately when the filter function returns false on any nodes. - * @return {Boolean} - * @api public - */ - -Node.prototype.isEmpty = function(fn) { - return utils.isEmpty(this, fn); -}; - -/** - * Given node `foo` and node `bar`, push node `bar` onto `foo.nodes`, and - * set `foo` as `bar.parent`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * foo.push(bar); - * ``` - * @param {Object} `node` - * @return {Number} Returns the length of `node.nodes` - * @api public - */ - -Node.prototype.push = function(node) { - assert(Node.isNode(node), 'expected node to be an instance of Node'); - define(node, 'parent', this); - - this.nodes = this.nodes || []; - return this.nodes.push(node); -}; - -/** - * Given node `foo` and node `bar`, unshift node `bar` onto `foo.nodes`, and - * set `foo` as `bar.parent`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * foo.unshift(bar); - * ``` - * @param {Object} `node` - * @return {Number} Returns the length of `node.nodes` - * @api public - */ - -Node.prototype.unshift = function(node) { - assert(Node.isNode(node), 'expected node to be an instance of Node'); - define(node, 'parent', this); - - this.nodes = this.nodes || []; - return this.nodes.unshift(node); -}; - -/** - * Pop a node from `node.nodes`. - * - * ```js - * var node = new Node({type: 'foo'}); - * node.push(new Node({type: 'a'})); - * node.push(new Node({type: 'b'})); - * node.push(new Node({type: 'c'})); - * node.push(new Node({type: 'd'})); - * console.log(node.nodes.length); - * //=> 4 - * node.pop(); - * console.log(node.nodes.length); - * //=> 3 - * ``` - * @return {Number} Returns the popped `node` - * @api public - */ - -Node.prototype.pop = function() { - return this.nodes && this.nodes.pop(); -}; - -/** - * Shift a node from `node.nodes`. - * - * ```js - * var node = new Node({type: 'foo'}); - * node.push(new Node({type: 'a'})); - * node.push(new Node({type: 'b'})); - * node.push(new Node({type: 'c'})); - * node.push(new Node({type: 'd'})); - * console.log(node.nodes.length); - * //=> 4 - * node.shift(); - * console.log(node.nodes.length); - * //=> 3 - * ``` - * @return {Object} Returns the shifted `node` - * @api public - */ - -Node.prototype.shift = function() { - return this.nodes && this.nodes.shift(); -}; - -/** - * Remove `node` from `node.nodes`. - * - * ```js - * node.remove(childNode); - * ``` - * @param {Object} `node` - * @return {Object} Returns the removed node. - * @api public - */ - -Node.prototype.remove = function(node) { - assert(Node.isNode(node), 'expected node to be an instance of Node'); - this.nodes = this.nodes || []; - var idx = node.index; - if (idx !== -1) { - node.index = -1; - return this.nodes.splice(idx, 1); - } - return null; -}; - -/** - * Get the first child node from `node.nodes` that matches the given `type`. - * If `type` is a number, the child node at that index is returned. - * - * ```js - * var child = node.find(1); //<= index of the node to get - * var child = node.find('foo'); //<= node.type of a child node - * var child = node.find(/^(foo|bar)$/); //<= regex to match node.type - * var child = node.find(['foo', 'bar']); //<= array of node.type(s) - * ``` - * @param {String} `type` - * @return {Object} Returns a child node or undefined. - * @api public - */ - -Node.prototype.find = function(type) { - return utils.findNode(this.nodes, type); -}; - -/** - * Return true if the node is the given `type`. - * - * ```js - * var node = new Node({type: 'bar'}); - * cosole.log(node.isType('foo')); // false - * cosole.log(node.isType(/^(foo|bar)$/)); // true - * cosole.log(node.isType(['foo', 'bar'])); // true - * ``` - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -Node.prototype.isType = function(type) { - return utils.isType(this, type); -}; - -/** - * Return true if the `node.nodes` has the given `type`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * foo.push(bar); - * - * cosole.log(foo.hasType('qux')); // false - * cosole.log(foo.hasType(/^(qux|bar)$/)); // true - * cosole.log(foo.hasType(['qux', 'bar'])); // true - * ``` - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -Node.prototype.hasType = function(type) { - return utils.hasType(this, type); -}; - -/** - * Get the siblings array, or `null` if it doesn't exist. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * foo.push(bar); - * foo.push(baz); - * - * console.log(bar.siblings.length) // 2 - * console.log(baz.siblings.length) // 2 - * ``` - * @return {Array} - * @api public - */ - -Object.defineProperty(Node.prototype, 'siblings', { - set: function() { - throw new Error('node.siblings is a getter and cannot be defined'); - }, - get: function() { - return this.parent ? this.parent.nodes : null; - } -}); - -/** - * Get the node's current index from `node.parent.nodes`. - * This should always be correct, even when the parent adds nodes. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * var qux = new Node({type: 'qux'}); - * foo.push(bar); - * foo.push(baz); - * foo.unshift(qux); - * - * console.log(bar.index) // 1 - * console.log(baz.index) // 2 - * console.log(qux.index) // 0 - * ``` - * @return {Number} - * @api public - */ - -Object.defineProperty(Node.prototype, 'index', { - set: function(index) { - define(this, 'idx', index); - }, - get: function() { - if (!Array.isArray(this.siblings)) { - return -1; - } - var tok = this.idx !== -1 ? this.siblings[this.idx] : null; - if (tok !== this) { - this.idx = this.siblings.indexOf(this); - } - return this.idx; - } -}); - -/** - * Get the previous node from the siblings array or `null`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * foo.push(bar); - * foo.push(baz); - * - * console.log(baz.prev.type) // 'bar' - * ``` - * @return {Object} - * @api public - */ - -Object.defineProperty(Node.prototype, 'prev', { - set: function() { - throw new Error('node.prev is a getter and cannot be defined'); - }, - get: function() { - if (Array.isArray(this.siblings)) { - return this.siblings[this.index - 1] || this.parent.prev; - } - return null; - } -}); - -/** - * Get the siblings array, or `null` if it doesn't exist. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * foo.push(bar); - * foo.push(baz); - * - * console.log(bar.siblings.length) // 2 - * console.log(baz.siblings.length) // 2 - * ``` - * @return {Object} - * @api public - */ - -Object.defineProperty(Node.prototype, 'next', { - set: function() { - throw new Error('node.next is a getter and cannot be defined'); - }, - get: function() { - if (Array.isArray(this.siblings)) { - return this.siblings[this.index + 1] || this.parent.next; - } - return null; - } -}); - -/** - * Get the first node from `node.nodes`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * var qux = new Node({type: 'qux'}); - * foo.push(bar); - * foo.push(baz); - * foo.push(qux); - * - * console.log(foo.first.type) // 'bar' - * ``` - * @return {Object} The first node, or undefiend - * @api public - */ - -Object.defineProperty(Node.prototype, 'first', { - get: function() { - return this.nodes ? this.nodes[0] : null; - } -}); - -/** - * Get the last node from `node.nodes`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * var qux = new Node({type: 'qux'}); - * foo.push(bar); - * foo.push(baz); - * foo.push(qux); - * - * console.log(foo.last.type) // 'qux' - * ``` - * @return {Object} The last node, or undefiend - * @api public - */ - -Object.defineProperty(Node.prototype, 'last', { - get: function() { - return this.nodes ? utils.last(this.nodes) : null; - } -}); - -/** - * Get the last node from `node.nodes`. - * - * ```js - * var foo = new Node({type: 'foo'}); - * var bar = new Node({type: 'bar'}); - * var baz = new Node({type: 'baz'}); - * var qux = new Node({type: 'qux'}); - * foo.push(bar); - * foo.push(baz); - * foo.push(qux); - * - * console.log(foo.last.type) // 'qux' - * ``` - * @return {Object} The last node, or undefiend - * @api public - */ - -Object.defineProperty(Node.prototype, 'scope', { - get: function() { - if (this.isScope !== true) { - return this.parent ? this.parent.scope : this; - } - return this; - } -}); - -/** - * Get own property names from Node prototype, but only the - * first time `Node` is instantiated - */ - -function lazyKeys() { - if (!ownNames) { - ownNames = Object.getOwnPropertyNames(Node.prototype); - } -} - -/** - * Simplified assertion. Throws an error is `val` is falsey. - */ - -function assert(val, message) { - if (!val) throw new Error(message); -} - -/** - * Expose `Node` - */ - -exports = module.exports = Node; - - -/***/ }), - -/***/ "../../node_modules/snapdragon-node/node_modules/define-property/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * define-property - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isDescriptor = __webpack_require__("../../node_modules/is-descriptor/index.js"); - -module.exports = function defineProperty(obj, prop, val) { - if (typeof obj !== 'object' && typeof obj !== 'function') { - throw new TypeError('expected an object or function.'); - } - - if (typeof prop !== 'string') { - throw new TypeError('expected `prop` to be a string.'); - } - - if (isDescriptor(val) && ('set' in val || 'get' in val)) { - return Object.defineProperty(obj, prop, val); - } - - return Object.defineProperty(obj, prop, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon-util/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var typeOf = __webpack_require__("../../node_modules/snapdragon-util/node_modules/kind-of/index.js"); -var utils = module.exports; - -/** - * Returns true if the given value is a node. - * - * ```js - * var Node = require('snapdragon-node'); - * var node = new Node({type: 'foo'}); - * console.log(utils.isNode(node)); //=> true - * console.log(utils.isNode({})); //=> false - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @returns {Boolean} - * @api public - */ - -utils.isNode = function(node) { - return typeOf(node) === 'object' && node.isNode === true; -}; - -/** - * Emit an empty string for the given `node`. - * - * ```js - * // do nothing for beginning-of-string - * snapdragon.compiler.set('bos', utils.noop); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @returns {undefined} - * @api public - */ - -utils.noop = function(node) { - append(this, '', node); -}; - -/** - * Appdend `node.val` to `compiler.output`, exactly as it was created - * by the parser. - * - * ```js - * snapdragon.compiler.set('text', utils.identity); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @returns {undefined} - * @api public - */ - -utils.identity = function(node) { - append(this, node.val, node); -}; - -/** - * Previously named `.emit`, this method appends the given `val` - * to `compiler.output` for the given node. Useful when you know - * what value should be appended advance, regardless of the actual - * value of `node.val`. - * - * ```js - * snapdragon.compiler - * .set('i', function(node) { - * this.mapVisit(node); - * }) - * .set('i.open', utils.append('')) - * .set('i.close', utils.append('')) - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @returns {Function} Returns a compiler middleware function. - * @api public - */ - -utils.append = function(val) { - return function(node) { - append(this, val, node); - }; -}; - -/** - * Used in compiler middleware, this onverts an AST node into - * an empty `text` node and deletes `node.nodes` if it exists. - * The advantage of this method is that, as opposed to completely - * removing the node, indices will not need to be re-calculated - * in sibling nodes, and nothing is appended to the output. - * - * ```js - * utils.toNoop(node); - * // convert `node.nodes` to the given value instead of deleting it - * utils.toNoop(node, []); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Array} `nodes` Optionally pass a new `nodes` value, to replace the existing `node.nodes` array. - * @api public - */ - -utils.toNoop = function(node, nodes) { - if (nodes) { - node.nodes = nodes; - } else { - delete node.nodes; - node.type = 'text'; - node.val = ''; - } -}; - -/** - * Visit `node` with the given `fn`. The built-in `.visit` method in snapdragon - * automatically calls registered compilers, this allows you to pass a visitor - * function. - * - * ```js - * snapdragon.compiler.set('i', function(node) { - * utils.visit(node, function(childNode) { - * // do stuff with "childNode" - * return childNode; - * }); - * }); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `fn` - * @return {Object} returns the node after recursively visiting all child nodes. - * @api public - */ - -utils.visit = function(node, fn) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isFunction(fn), 'expected a visitor function'); - fn(node); - return node.nodes ? utils.mapVisit(node, fn) : node; -}; - -/** - * Map [visit](#visit) the given `fn` over `node.nodes`. This is called by - * [visit](#visit), use this method if you do not want `fn` to be called on - * the first node. - * - * ```js - * snapdragon.compiler.set('i', function(node) { - * utils.mapVisit(node, function(childNode) { - * // do stuff with "childNode" - * return childNode; - * }); - * }); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Object} `options` - * @param {Function} `fn` - * @return {Object} returns the node - * @api public - */ - -utils.mapVisit = function(node, fn) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isArray(node.nodes), 'expected node.nodes to be an array'); - assert(isFunction(fn), 'expected a visitor function'); - - for (var i = 0; i < node.nodes.length; i++) { - utils.visit(node.nodes[i], fn); - } - return node; -}; - -/** - * Unshift an `*.open` node onto `node.nodes`. - * - * ```js - * var Node = require('snapdragon-node'); - * snapdragon.parser.set('brace', function(node) { - * var match = this.match(/^{/); - * if (match) { - * var parent = new Node({type: 'brace'}); - * utils.addOpen(parent, Node); - * console.log(parent.nodes[0]): - * // { type: 'brace.open', val: '' }; - * - * // push the parent "brace" node onto the stack - * this.push(parent); - * - * // return the parent node, so it's also added to the AST - * return brace; - * } - * }); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. - * @param {Function} `filter` Optionaly specify a filter function to exclude the node. - * @return {Object} Returns the created opening node. - * @api public - */ - -utils.addOpen = function(node, Node, val, filter) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isFunction(Node), 'expected Node to be a constructor function'); - - if (typeof val === 'function') { - filter = val; - val = ''; - } - - if (typeof filter === 'function' && !filter(node)) return; - var open = new Node({ type: node.type + '.open', val: val}); - var unshift = node.unshift || node.unshiftNode; - if (typeof unshift === 'function') { - unshift.call(node, open); - } else { - utils.unshiftNode(node, open); - } - return open; -}; - -/** - * Push a `*.close` node onto `node.nodes`. - * - * ```js - * var Node = require('snapdragon-node'); - * snapdragon.parser.set('brace', function(node) { - * var match = this.match(/^}/); - * if (match) { - * var parent = this.parent(); - * if (parent.type !== 'brace') { - * throw new Error('missing opening: ' + '}'); - * } - * - * utils.addClose(parent, Node); - * console.log(parent.nodes[parent.nodes.length - 1]): - * // { type: 'brace.close', val: '' }; - * - * // no need to return a node, since the parent - * // was already added to the AST - * return; - * } - * }); - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. - * @param {Function} `filter` Optionaly specify a filter function to exclude the node. - * @return {Object} Returns the created closing node. - * @api public - */ - -utils.addClose = function(node, Node, val, filter) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isFunction(Node), 'expected Node to be a constructor function'); - - if (typeof val === 'function') { - filter = val; - val = ''; - } - - if (typeof filter === 'function' && !filter(node)) return; - var close = new Node({ type: node.type + '.close', val: val}); - var push = node.push || node.pushNode; - if (typeof push === 'function') { - push.call(node, close); - } else { - utils.pushNode(node, close); - } - return close; -}; - -/** - * Wraps the given `node` with `*.open` and `*.close` nodes. - * - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `Node` (required) Node constructor function from [snapdragon-node][]. - * @param {Function} `filter` Optionaly specify a filter function to exclude the node. - * @return {Object} Returns the node - * @api public - */ - -utils.wrapNodes = function(node, Node, filter) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isFunction(Node), 'expected Node to be a constructor function'); - - utils.addOpen(node, Node, filter); - utils.addClose(node, Node, filter); - return node; -}; - -/** - * Push the given `node` onto `parent.nodes`, and set `parent` as `node.parent. - * - * ```js - * var parent = new Node({type: 'foo'}); - * var node = new Node({type: 'bar'}); - * utils.pushNode(parent, node); - * console.log(parent.nodes[0].type) // 'bar' - * console.log(node.parent.type) // 'foo' - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Object} Returns the child node - * @api public - */ - -utils.pushNode = function(parent, node) { - assert(utils.isNode(parent), 'expected parent node to be an instance of Node'); - assert(utils.isNode(node), 'expected node to be an instance of Node'); - - node.define('parent', parent); - parent.nodes = parent.nodes || []; - parent.nodes.push(node); - return node; -}; - -/** - * Unshift `node` onto `parent.nodes`, and set `parent` as `node.parent. - * - * ```js - * var parent = new Node({type: 'foo'}); - * var node = new Node({type: 'bar'}); - * utils.unshiftNode(parent, node); - * console.log(parent.nodes[0].type) // 'bar' - * console.log(node.parent.type) // 'foo' - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {undefined} - * @api public - */ - -utils.unshiftNode = function(parent, node) { - assert(utils.isNode(parent), 'expected parent node to be an instance of Node'); - assert(utils.isNode(node), 'expected node to be an instance of Node'); - - node.define('parent', parent); - parent.nodes = parent.nodes || []; - parent.nodes.unshift(node); -}; - -/** - * Pop the last `node` off of `parent.nodes`. The advantage of - * using this method is that it checks for `node.nodes` and works - * with any version of `snapdragon-node`. - * - * ```js - * var parent = new Node({type: 'foo'}); - * utils.pushNode(parent, new Node({type: 'foo'})); - * utils.pushNode(parent, new Node({type: 'bar'})); - * utils.pushNode(parent, new Node({type: 'baz'})); - * console.log(parent.nodes.length); //=> 3 - * utils.popNode(parent); - * console.log(parent.nodes.length); //=> 2 - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Number|Undefined} Returns the length of `node.nodes` or undefined. - * @api public - */ - -utils.popNode = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - if (typeof node.pop === 'function') { - return node.pop(); - } - return node.nodes && node.nodes.pop(); -}; - -/** - * Shift the first `node` off of `parent.nodes`. The advantage of - * using this method is that it checks for `node.nodes` and works - * with any version of `snapdragon-node`. - * - * ```js - * var parent = new Node({type: 'foo'}); - * utils.pushNode(parent, new Node({type: 'foo'})); - * utils.pushNode(parent, new Node({type: 'bar'})); - * utils.pushNode(parent, new Node({type: 'baz'})); - * console.log(parent.nodes.length); //=> 3 - * utils.shiftNode(parent); - * console.log(parent.nodes.length); //=> 2 - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Number|Undefined} Returns the length of `node.nodes` or undefined. - * @api public - */ - -utils.shiftNode = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - if (typeof node.shift === 'function') { - return node.shift(); - } - return node.nodes && node.nodes.shift(); -}; - -/** - * Remove the specified `node` from `parent.nodes`. - * - * ```js - * var parent = new Node({type: 'abc'}); - * var foo = new Node({type: 'foo'}); - * utils.pushNode(parent, foo); - * utils.pushNode(parent, new Node({type: 'bar'})); - * utils.pushNode(parent, new Node({type: 'baz'})); - * console.log(parent.nodes.length); //=> 3 - * utils.removeNode(parent, foo); - * console.log(parent.nodes.length); //=> 2 - * ``` - * @param {Object} `parent` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Object|undefined} Returns the removed node, if successful, or undefined if it does not exist on `parent.nodes`. - * @api public - */ - -utils.removeNode = function(parent, node) { - assert(utils.isNode(parent), 'expected parent.node to be an instance of Node'); - assert(utils.isNode(node), 'expected node to be an instance of Node'); - - if (!parent.nodes) { - return null; - } - - if (typeof parent.remove === 'function') { - return parent.remove(node); - } - - var idx = parent.nodes.indexOf(node); - if (idx !== -1) { - return parent.nodes.splice(idx, 1); - } -}; - -/** - * Returns true if `node.type` matches the given `type`. Throws a - * `TypeError` if `node` is not an instance of `Node`. - * - * ```js - * var Node = require('snapdragon-node'); - * var node = new Node({type: 'foo'}); - * console.log(utils.isType(node, 'foo')); // false - * console.log(utils.isType(node, 'bar')); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -utils.isType = function(node, type) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - switch (typeOf(type)) { - case 'array': - var types = type.slice(); - for (var i = 0; i < types.length; i++) { - if (utils.isType(node, types[i])) { - return true; - } - } - return false; - case 'string': - return node.type === type; - case 'regexp': - return type.test(node.type); - default: { - throw new TypeError('expected "type" to be an array, string or regexp'); - } - } -}; - -/** - * Returns true if the given `node` has the given `type` in `node.nodes`. - * Throws a `TypeError` if `node` is not an instance of `Node`. - * - * ```js - * var Node = require('snapdragon-node'); - * var node = new Node({ - * type: 'foo', - * nodes: [ - * new Node({type: 'bar'}), - * new Node({type: 'baz'}) - * ] - * }); - * console.log(utils.hasType(node, 'xyz')); // false - * console.log(utils.hasType(node, 'baz')); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -utils.hasType = function(node, type) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - if (!Array.isArray(node.nodes)) return false; - for (var i = 0; i < node.nodes.length; i++) { - if (utils.isType(node.nodes[i], type)) { - return true; - } - } - return false; -}; - -/** - * Returns the first node from `node.nodes` of the given `type` - * - * ```js - * var node = new Node({ - * type: 'foo', - * nodes: [ - * new Node({type: 'text', val: 'abc'}), - * new Node({type: 'text', val: 'xyz'}) - * ] - * }); - * - * var textNode = utils.firstOfType(node.nodes, 'text'); - * console.log(textNode.val); - * //=> 'abc' - * ``` - * @param {Array} `nodes` - * @param {String} `type` - * @return {Object|undefined} Returns the first matching node or undefined. - * @api public - */ - -utils.firstOfType = function(nodes, type) { - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - if (utils.isType(node, type)) { - return node; - } - } -}; - -/** - * Returns the node at the specified index, or the first node of the - * given `type` from `node.nodes`. - * - * ```js - * var node = new Node({ - * type: 'foo', - * nodes: [ - * new Node({type: 'text', val: 'abc'}), - * new Node({type: 'text', val: 'xyz'}) - * ] - * }); - * - * var nodeOne = utils.findNode(node.nodes, 'text'); - * console.log(nodeOne.val); - * //=> 'abc' - * - * var nodeTwo = utils.findNode(node.nodes, 1); - * console.log(nodeTwo.val); - * //=> 'xyz' - * ``` - * - * @param {Array} `nodes` - * @param {String|Number} `type` Node type or index. - * @return {Object} Returns a node or undefined. - * @api public - */ - -utils.findNode = function(nodes, type) { - if (!Array.isArray(nodes)) { - return null; - } - if (typeof type === 'number') { - return nodes[type]; - } - return utils.firstOfType(nodes, type); -}; - -/** - * Returns true if the given node is an "*.open" node. - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({type: 'brace'}); - * var open = new Node({type: 'brace.open'}); - * var close = new Node({type: 'brace.close'}); - * - * console.log(utils.isOpen(brace)); // false - * console.log(utils.isOpen(open)); // true - * console.log(utils.isOpen(close)); // false - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.isOpen = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - return node.type.slice(-5) === '.open'; -}; - -/** - * Returns true if the given node is a "*.close" node. - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({type: 'brace'}); - * var open = new Node({type: 'brace.open'}); - * var close = new Node({type: 'brace.close'}); - * - * console.log(utils.isClose(brace)); // false - * console.log(utils.isClose(open)); // false - * console.log(utils.isClose(close)); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.isClose = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - return node.type.slice(-6) === '.close'; -}; - -/** - * Returns true if `node.nodes` **has** an `.open` node - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({ - * type: 'brace', - * nodes: [] - * }); - * - * var open = new Node({type: 'brace.open'}); - * console.log(utils.hasOpen(brace)); // false - * - * brace.pushNode(open); - * console.log(utils.hasOpen(brace)); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.hasOpen = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - var first = node.first || node.nodes ? node.nodes[0] : null; - if (utils.isNode(first)) { - return first.type === node.type + '.open'; - } - return false; -}; - -/** - * Returns true if `node.nodes` **has** a `.close` node - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({ - * type: 'brace', - * nodes: [] - * }); - * - * var close = new Node({type: 'brace.close'}); - * console.log(utils.hasClose(brace)); // false - * - * brace.pushNode(close); - * console.log(utils.hasClose(brace)); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.hasClose = function(node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - var last = node.last || node.nodes ? node.nodes[node.nodes.length - 1] : null; - if (utils.isNode(last)) { - return last.type === node.type + '.close'; - } - return false; -}; - -/** - * Returns true if `node.nodes` has both `.open` and `.close` nodes - * - * ```js - * var Node = require('snapdragon-node'); - * var brace = new Node({ - * type: 'brace', - * nodes: [] - * }); - * - * var open = new Node({type: 'brace.open'}); - * var close = new Node({type: 'brace.close'}); - * console.log(utils.hasOpen(brace)); // false - * console.log(utils.hasClose(brace)); // false - * - * brace.pushNode(open); - * brace.pushNode(close); - * console.log(utils.hasOpen(brace)); // true - * console.log(utils.hasClose(brace)); // true - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Boolean} - * @api public - */ - -utils.hasOpenAndClose = function(node) { - return utils.hasOpen(node) && utils.hasClose(node); -}; - -/** - * Push the given `node` onto the `state.inside` array for the - * given type. This array is used as a specialized "stack" for - * only the given `node.type`. - * - * ```js - * var state = { inside: {}}; - * var node = new Node({type: 'brace'}); - * utils.addType(state, node); - * console.log(state.inside); - * //=> { brace: [{type: 'brace'}] } - * ``` - * @param {Object} `state` The `compiler.state` object or custom state object. - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Array} Returns the `state.inside` stack for the given type. - * @api public - */ - -utils.addType = function(state, node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isObject(state), 'expected state to be an object'); - - var type = node.parent - ? node.parent.type - : node.type.replace(/\.open$/, ''); - - if (!state.hasOwnProperty('inside')) { - state.inside = {}; - } - if (!state.inside.hasOwnProperty(type)) { - state.inside[type] = []; - } - - var arr = state.inside[type]; - arr.push(node); - return arr; -}; - -/** - * Remove the given `node` from the `state.inside` array for the - * given type. This array is used as a specialized "stack" for - * only the given `node.type`. - * - * ```js - * var state = { inside: {}}; - * var node = new Node({type: 'brace'}); - * utils.addType(state, node); - * console.log(state.inside); - * //=> { brace: [{type: 'brace'}] } - * utils.removeType(state, node); - * //=> { brace: [] } - * ``` - * @param {Object} `state` The `compiler.state` object or custom state object. - * @param {Object} `node` Instance of [snapdragon-node][] - * @return {Array} Returns the `state.inside` stack for the given type. - * @api public - */ - -utils.removeType = function(state, node) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isObject(state), 'expected state to be an object'); - - var type = node.parent - ? node.parent.type - : node.type.replace(/\.close$/, ''); - - if (state.inside.hasOwnProperty(type)) { - return state.inside[type].pop(); - } -}; - -/** - * Returns true if `node.val` is an empty string, or `node.nodes` does - * not contain any non-empty text nodes. - * - * ```js - * var node = new Node({type: 'text'}); - * utils.isEmpty(node); //=> true - * node.val = 'foo'; - * utils.isEmpty(node); //=> false - * ``` - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {Function} `fn` - * @return {Boolean} - * @api public - */ - -utils.isEmpty = function(node, fn) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - - if (!Array.isArray(node.nodes)) { - if (node.type !== 'text') { - return true; - } - if (typeof fn === 'function') { - return fn(node, node.parent); - } - return !utils.trim(node.val); - } - - for (var i = 0; i < node.nodes.length; i++) { - var child = node.nodes[i]; - if (utils.isOpen(child) || utils.isClose(child)) { - continue; - } - if (!utils.isEmpty(child, fn)) { - return false; - } - } - - return true; -}; - -/** - * Returns true if the `state.inside` stack for the given type exists - * and has one or more nodes on it. - * - * ```js - * var state = { inside: {}}; - * var node = new Node({type: 'brace'}); - * console.log(utils.isInsideType(state, 'brace')); //=> false - * utils.addType(state, node); - * console.log(utils.isInsideType(state, 'brace')); //=> true - * utils.removeType(state, node); - * console.log(utils.isInsideType(state, 'brace')); //=> false - * ``` - * @param {Object} `state` - * @param {String} `type` - * @return {Boolean} - * @api public - */ - -utils.isInsideType = function(state, type) { - assert(isObject(state), 'expected state to be an object'); - assert(isString(type), 'expected type to be a string'); - - if (!state.hasOwnProperty('inside')) { - return false; - } - - if (!state.inside.hasOwnProperty(type)) { - return false; - } - - return state.inside[type].length > 0; -}; - -/** - * Returns true if `node` is either a child or grand-child of the given `type`, - * or `state.inside[type]` is a non-empty array. - * - * ```js - * var state = { inside: {}}; - * var node = new Node({type: 'brace'}); - * var open = new Node({type: 'brace.open'}); - * console.log(utils.isInside(state, open, 'brace')); //=> false - * utils.pushNode(node, open); - * console.log(utils.isInside(state, open, 'brace')); //=> true - * ``` - * @param {Object} `state` Either the `compiler.state` object, if it exists, or a user-supplied state object. - * @param {Object} `node` Instance of [snapdragon-node][] - * @param {String} `type` The `node.type` to check for. - * @return {Boolean} - * @api public - */ - -utils.isInside = function(state, node, type) { - assert(utils.isNode(node), 'expected node to be an instance of Node'); - assert(isObject(state), 'expected state to be an object'); - - if (Array.isArray(type)) { - for (var i = 0; i < type.length; i++) { - if (utils.isInside(state, node, type[i])) { - return true; - } - } - return false; - } - - var parent = node.parent; - if (typeof type === 'string') { - return (parent && parent.type === type) || utils.isInsideType(state, type); - } - - if (typeOf(type) === 'regexp') { - if (parent && parent.type && type.test(parent.type)) { - return true; - } - - var keys = Object.keys(state.inside); - var len = keys.length; - var idx = -1; - while (++idx < len) { - var key = keys[idx]; - var val = state.inside[key]; - - if (Array.isArray(val) && val.length !== 0 && type.test(key)) { - return true; - } - } - } - return false; -}; - -/** - * Get the last `n` element from the given `array`. Used for getting - * a node from `node.nodes.` - * - * @param {Array} `array` - * @param {Number} `n` - * @return {undefined} - * @api public - */ - -utils.last = function(arr, n) { - return arr[arr.length - (n || 1)]; -}; - -/** - * Cast the given `val` to an array. - * - * ```js - * console.log(utils.arrayify('')); - * //=> [] - * console.log(utils.arrayify('foo')); - * //=> ['foo'] - * console.log(utils.arrayify(['foo'])); - * //=> ['foo'] - * ``` - * @param {any} `val` - * @return {Array} - * @api public - */ - -utils.arrayify = function(val) { - if (typeof val === 'string' && val !== '') { - return [val]; - } - if (!Array.isArray(val)) { - return []; - } - return val; -}; - -/** - * Convert the given `val` to a string by joining with `,`. Useful - * for creating a cheerio/CSS/DOM-style selector from a list of strings. - * - * @param {any} `val` - * @return {Array} - * @api public - */ - -utils.stringify = function(val) { - return utils.arrayify(val).join(','); -}; - -/** - * Ensure that the given value is a string and call `.trim()` on it, - * or return an empty string. - * - * @param {String} `str` - * @return {String} - * @api public - */ - -utils.trim = function(str) { - return typeof str === 'string' ? str.trim() : ''; -}; - -/** - * Return true if val is an object - */ - -function isObject(val) { - return typeOf(val) === 'object'; -} - -/** - * Return true if val is a string - */ - -function isString(val) { - return typeof val === 'string'; -} - -/** - * Return true if val is a function - */ - -function isFunction(val) { - return typeof val === 'function'; -} - -/** - * Return true if val is an array - */ - -function isArray(val) { - return Array.isArray(val); -} - -/** - * Shim to ensure the `.append` methods work with any version of snapdragon - */ - -function append(compiler, val, node) { - if (typeof compiler.append !== 'function') { - return compiler.emit(val, node); - } - return compiler.append(val, node); -} - -/** - * Simplified assertion. Throws an error is `val` is falsey. - */ - -function assert(val, message) { - if (!val) throw new Error(message); -} - - -/***/ }), - -/***/ "../../node_modules/snapdragon-util/node_modules/kind-of/index.js": -/***/ (function(module, exports, __webpack_require__) { - -var isBuffer = __webpack_require__("../../node_modules/is-buffer/index.js"); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ - -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } - - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } - - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } - - // other objects - var type = toString.call(val); - - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } - - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } - - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } - - // must be a plain object - return 'object'; -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var Base = __webpack_require__("../../node_modules/base/index.js"); -var define = __webpack_require__("../../node_modules/define-property/index.js"); -var Compiler = __webpack_require__("../../node_modules/snapdragon/lib/compiler.js"); -var Parser = __webpack_require__("../../node_modules/snapdragon/lib/parser.js"); -var utils = __webpack_require__("../../node_modules/snapdragon/lib/utils.js"); -var regexCache = {}; -var cache = {}; - -/** - * Create a new instance of `Snapdragon` with the given `options`. - * - * ```js - * var snapdragon = new Snapdragon(); - * ``` - * - * @param {Object} `options` - * @api public - */ - -function Snapdragon(options) { - Base.call(this, null, options); - this.options = utils.extend({source: 'string'}, this.options); - this.compiler = new Compiler(this.options); - this.parser = new Parser(this.options); - - Object.defineProperty(this, 'compilers', { - get: function() { - return this.compiler.compilers; - } - }); - - Object.defineProperty(this, 'parsers', { - get: function() { - return this.parser.parsers; - } - }); - - Object.defineProperty(this, 'regex', { - get: function() { - return this.parser.regex; - } - }); -} - -/** - * Inherit Base - */ - -Base.extend(Snapdragon); - -/** - * Add a parser to `snapdragon.parsers` for capturing the given `type` using - * the specified regex or parser function. A function is useful if you need - * to customize how the token is created and/or have access to the parser - * instance to check options, etc. - * - * ```js - * snapdragon - * .capture('slash', /^\//) - * .capture('dot', function() { - * var pos = this.position(); - * var m = this.match(/^\./); - * if (!m) return; - * return pos({ - * type: 'dot', - * val: m[0] - * }); - * }); - * ``` - * @param {String} `type` - * @param {RegExp|Function} `regex` - * @return {Object} Returns the parser instance for chaining - * @api public - */ - -Snapdragon.prototype.capture = function() { - return this.parser.capture.apply(this.parser, arguments); -}; - -/** - * Register a plugin `fn`. - * - * ```js - * var snapdragon = new Snapdgragon([options]); - * snapdragon.use(function() { - * console.log(this); //<= snapdragon instance - * console.log(this.parser); //<= parser instance - * console.log(this.compiler); //<= compiler instance - * }); - * ``` - * @param {Object} `fn` - * @api public - */ - -Snapdragon.prototype.use = function(fn) { - fn.call(this, this); - return this; -}; - -/** - * Parse the given `str`. - * - * ```js - * var snapdragon = new Snapdgragon([options]); - * // register parsers - * snapdragon.parser.use(function() {}); - * - * // parse - * var ast = snapdragon.parse('foo/bar'); - * console.log(ast); - * ``` - * @param {String} `str` - * @param {Object} `options` Set `options.sourcemap` to true to enable source maps. - * @return {Object} Returns an AST. - * @api public - */ - -Snapdragon.prototype.parse = function(str, options) { - this.options = utils.extend({}, this.options, options); - var parsed = this.parser.parse(str, this.options); - - // add non-enumerable parser reference - define(parsed, 'parser', this.parser); - return parsed; -}; - -/** - * Compile the given `AST`. - * - * ```js - * var snapdragon = new Snapdgragon([options]); - * // register plugins - * snapdragon.use(function() {}); - * // register parser plugins - * snapdragon.parser.use(function() {}); - * // register compiler plugins - * snapdragon.compiler.use(function() {}); - * - * // parse - * var ast = snapdragon.parse('foo/bar'); - * - * // compile - * var res = snapdragon.compile(ast); - * console.log(res.output); - * ``` - * @param {Object} `ast` - * @param {Object} `options` - * @return {Object} Returns an object with an `output` property with the rendered string. - * @api public - */ - -Snapdragon.prototype.compile = function(ast, options) { - this.options = utils.extend({}, this.options, options); - var compiled = this.compiler.compile(ast, this.options); - - // add non-enumerable compiler reference - define(compiled, 'compiler', this.compiler); - return compiled; -}; - -/** - * Expose `Snapdragon` - */ - -module.exports = Snapdragon; - -/** - * Expose `Parser` and `Compiler` - */ - -module.exports.Compiler = Compiler; -module.exports.Parser = Parser; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/lib/compiler.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var use = __webpack_require__("../../node_modules/use/index.js"); -var define = __webpack_require__("../../node_modules/define-property/index.js"); -var debug = __webpack_require__("../../node_modules/debug/src/index.js")('snapdragon:compiler'); -var utils = __webpack_require__("../../node_modules/snapdragon/lib/utils.js"); - -/** - * Create a new `Compiler` with the given `options`. - * @param {Object} `options` - */ - -function Compiler(options, state) { - debug('initializing', __filename); - this.options = utils.extend({source: 'string'}, options); - this.state = state || {}; - this.compilers = {}; - this.output = ''; - this.set('eos', function(node) { - return this.emit(node.val, node); - }); - this.set('noop', function(node) { - return this.emit(node.val, node); - }); - this.set('bos', function(node) { - return this.emit(node.val, node); - }); - use(this); -} - -/** - * Prototype methods - */ - -Compiler.prototype = { - - /** - * Throw an error message with details including the cursor position. - * @param {String} `msg` Message to use in the Error. - */ - - error: function(msg, node) { - var pos = node.position || {start: {column: 0}}; - var message = this.options.source + ' column:' + pos.start.column + ': ' + msg; - - var err = new Error(message); - err.reason = msg; - err.column = pos.start.column; - err.source = this.pattern; - - if (this.options.silent) { - this.errors.push(err); - } else { - throw err; - } - }, - - /** - * Define a non-enumberable property on the `Compiler` instance. - * - * ```js - * compiler.define('foo', 'bar'); - * ``` - * @name .define - * @param {String} `key` propery name - * @param {any} `val` property value - * @return {Object} Returns the Compiler instance for chaining. - * @api public - */ - - define: function(key, val) { - define(this, key, val); - return this; - }, - - /** - * Emit `node.val` - */ - - emit: function(str, node) { - this.output += str; - return str; - }, - - /** - * Add a compiler `fn` with the given `name` - */ - - set: function(name, fn) { - this.compilers[name] = fn; - return this; - }, - - /** - * Get compiler `name`. - */ - - get: function(name) { - return this.compilers[name]; - }, - - /** - * Get the previous AST node. - */ - - prev: function(n) { - return this.ast.nodes[this.idx - (n || 1)] || { type: 'bos', val: '' }; - }, - - /** - * Get the next AST node. - */ - - next: function(n) { - return this.ast.nodes[this.idx + (n || 1)] || { type: 'eos', val: '' }; - }, - - /** - * Visit `node`. - */ - - visit: function(node, nodes, i) { - var fn = this.compilers[node.type]; - this.idx = i; - - if (typeof fn !== 'function') { - throw this.error('compiler "' + node.type + '" is not registered', node); - } - return fn.call(this, node, nodes, i); - }, - - /** - * Map visit over array of `nodes`. - */ - - mapVisit: function(nodes) { - if (!Array.isArray(nodes)) { - throw new TypeError('expected an array'); - } - var len = nodes.length; - var idx = -1; - while (++idx < len) { - this.visit(nodes[idx], nodes, idx); - } - return this; - }, - - /** - * Compile `ast`. - */ - - compile: function(ast, options) { - var opts = utils.extend({}, this.options, options); - this.ast = ast; - this.parsingErrors = this.ast.errors; - this.output = ''; - - // source map support - if (opts.sourcemap) { - var sourcemaps = __webpack_require__("../../node_modules/snapdragon/lib/source-maps.js"); - sourcemaps(this); - this.mapVisit(this.ast.nodes); - this.applySourceMaps(); - this.map = opts.sourcemap === 'generator' ? this.map : this.map.toJSON(); - return this; - } - - this.mapVisit(this.ast.nodes); - return this; - } -}; - -/** - * Expose `Compiler` - */ - -module.exports = Compiler; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/lib/parser.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var use = __webpack_require__("../../node_modules/use/index.js"); -var util = __webpack_require__("util"); -var Cache = __webpack_require__("../../node_modules/map-cache/index.js"); -var define = __webpack_require__("../../node_modules/define-property/index.js"); -var debug = __webpack_require__("../../node_modules/debug/src/index.js")('snapdragon:parser'); -var Position = __webpack_require__("../../node_modules/snapdragon/lib/position.js"); -var utils = __webpack_require__("../../node_modules/snapdragon/lib/utils.js"); - -/** - * Create a new `Parser` with the given `input` and `options`. - * @param {String} `input` - * @param {Object} `options` - * @api public - */ - -function Parser(options) { - debug('initializing', __filename); - this.options = utils.extend({source: 'string'}, options); - this.init(this.options); - use(this); -} - -/** - * Prototype methods - */ - -Parser.prototype = { - constructor: Parser, - - init: function(options) { - this.orig = ''; - this.input = ''; - this.parsed = ''; - - this.column = 1; - this.line = 1; - - this.regex = new Cache(); - this.errors = this.errors || []; - this.parsers = this.parsers || {}; - this.types = this.types || []; - this.sets = this.sets || {}; - this.fns = this.fns || []; - this.currentType = 'root'; - - var pos = this.position(); - this.bos = pos({type: 'bos', val: ''}); - - this.ast = { - type: 'root', - errors: this.errors, - nodes: [this.bos] - }; - - define(this.bos, 'parent', this.ast); - this.nodes = [this.ast]; - - this.count = 0; - this.setCount = 0; - this.stack = []; - }, - - /** - * Throw a formatted error with the cursor column and `msg`. - * @param {String} `msg` Message to use in the Error. - */ - - error: function(msg, node) { - var pos = node.position || {start: {column: 0, line: 0}}; - var line = pos.start.line; - var column = pos.start.column; - var source = this.options.source; - - var message = source + ' : ' + msg; - var err = new Error(message); - err.source = source; - err.reason = msg; - err.pos = pos; - - if (this.options.silent) { - this.errors.push(err); - } else { - throw err; - } - }, - - /** - * Define a non-enumberable property on the `Parser` instance. - * - * ```js - * parser.define('foo', 'bar'); - * ``` - * @name .define - * @param {String} `key` propery name - * @param {any} `val` property value - * @return {Object} Returns the Parser instance for chaining. - * @api public - */ - - define: function(key, val) { - define(this, key, val); - return this; - }, - - /** - * Mark position and patch `node.position`. - */ - - position: function() { - var start = { line: this.line, column: this.column }; - var self = this; - - return function(node) { - define(node, 'position', new Position(start, self)); - return node; - }; - }, - - /** - * Set parser `name` with the given `fn` - * @param {String} `name` - * @param {Function} `fn` - * @api public - */ - - set: function(type, fn) { - if (this.types.indexOf(type) === -1) { - this.types.push(type); - } - this.parsers[type] = fn.bind(this); - return this; - }, - - /** - * Get parser `name` - * @param {String} `name` - * @api public - */ - - get: function(name) { - return this.parsers[name]; - }, - - /** - * Push a `token` onto the `type` stack. - * - * @param {String} `type` - * @return {Object} `token` - * @api public - */ - - push: function(type, token) { - this.sets[type] = this.sets[type] || []; - this.count++; - this.stack.push(token); - return this.sets[type].push(token); - }, - - /** - * Pop a token off of the `type` stack - * @param {String} `type` - * @returns {Object} Returns a token - * @api public - */ - - pop: function(type) { - this.sets[type] = this.sets[type] || []; - this.count--; - this.stack.pop(); - return this.sets[type].pop(); - }, - - /** - * Return true if inside a `stack` node. Types are `braces`, `parens` or `brackets`. - * - * @param {String} `type` - * @return {Boolean} - * @api public - */ - - isInside: function(type) { - this.sets[type] = this.sets[type] || []; - return this.sets[type].length > 0; - }, - - /** - * Return true if `node` is the given `type`. - * - * ```js - * parser.isType(node, 'brace'); - * ``` - * @param {Object} `node` - * @param {String} `type` - * @return {Boolean} - * @api public - */ - - isType: function(node, type) { - return node && node.type === type; - }, - - /** - * Get the previous AST node - * @return {Object} - */ - - prev: function(n) { - return this.stack.length > 0 - ? utils.last(this.stack, n) - : utils.last(this.nodes, n); - }, - - /** - * Update line and column based on `str`. - */ - - consume: function(len) { - this.input = this.input.substr(len); - }, - - /** - * Update column based on `str`. - */ - - updatePosition: function(str, len) { - var lines = str.match(/\n/g); - if (lines) this.line += lines.length; - var i = str.lastIndexOf('\n'); - this.column = ~i ? len - i : this.column + len; - this.parsed += str; - this.consume(len); - }, - - /** - * Match `regex`, return captures, and update the cursor position by `match[0]` length. - * @param {RegExp} `regex` - * @return {Object} - */ - - match: function(regex) { - var m = regex.exec(this.input); - if (m) { - this.updatePosition(m[0], m[0].length); - return m; - } - }, - - /** - * Capture `type` with the given regex. - * @param {String} `type` - * @param {RegExp} `regex` - * @return {Function} - */ - - capture: function(type, regex) { - if (typeof regex === 'function') { - return this.set.apply(this, arguments); - } - - this.regex.set(type, regex); - this.set(type, function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(regex); - if (!m || !m[0]) return; - - var prev = this.prev(); - var node = pos({ - type: type, - val: m[0], - parsed: parsed, - rest: this.input - }); - - if (m[1]) { - node.inner = m[1]; - } - - define(node, 'inside', this.stack.length > 0); - define(node, 'parent', prev); - prev.nodes.push(node); - }.bind(this)); - return this; - }, - - /** - * Create a parser with open and close for parens, - * brackets or braces - */ - - capturePair: function(type, openRegex, closeRegex, fn) { - this.sets[type] = this.sets[type] || []; - - /** - * Open - */ - - this.set(type + '.open', function() { - var parsed = this.parsed; - var pos = this.position(); - var m = this.match(openRegex); - if (!m || !m[0]) return; - - var val = m[0]; - this.setCount++; - this.specialChars = true; - var open = pos({ - type: type + '.open', - val: val, - rest: this.input - }); - - if (typeof m[1] !== 'undefined') { - open.inner = m[1]; - } - - var prev = this.prev(); - var node = pos({ - type: type, - nodes: [open] - }); - - define(node, 'rest', this.input); - define(node, 'parsed', parsed); - define(node, 'prefix', m[1]); - define(node, 'parent', prev); - define(open, 'parent', node); - - if (typeof fn === 'function') { - fn.call(this, open, node); - } - - this.push(type, node); - prev.nodes.push(node); - }); - - /** - * Close - */ - - this.set(type + '.close', function() { - var pos = this.position(); - var m = this.match(closeRegex); - if (!m || !m[0]) return; - - var parent = this.pop(type); - var node = pos({ - type: type + '.close', - rest: this.input, - suffix: m[1], - val: m[0] - }); - - if (!this.isType(parent, type)) { - if (this.options.strict) { - throw new Error('missing opening "' + type + '"'); - } - - this.setCount--; - node.escaped = true; - return node; - } - - if (node.suffix === '\\') { - parent.escaped = true; - node.escaped = true; - } - - parent.nodes.push(node); - define(node, 'parent', parent); - }); - - return this; - }, - - /** - * Capture end-of-string - */ - - eos: function() { - var pos = this.position(); - if (this.input) return; - var prev = this.prev(); - - while (prev.type !== 'root' && !prev.visited) { - if (this.options.strict === true) { - throw new SyntaxError('invalid syntax:' + util.inspect(prev, null, 2)); - } - - if (!hasDelims(prev)) { - prev.parent.escaped = true; - prev.escaped = true; - } - - visit(prev, function(node) { - if (!hasDelims(node.parent)) { - node.parent.escaped = true; - node.escaped = true; - } - }); - - prev = prev.parent; - } - - var tok = pos({ - type: 'eos', - val: this.append || '' - }); - - define(tok, 'parent', this.ast); - return tok; - }, - - /** - * Run parsers to advance the cursor position - */ - - next: function() { - var parsed = this.parsed; - var len = this.types.length; - var idx = -1; - var tok; - - while (++idx < len) { - if ((tok = this.parsers[this.types[idx]].call(this))) { - define(tok, 'rest', this.input); - define(tok, 'parsed', parsed); - this.last = tok; - return tok; - } - } - }, - - /** - * Parse the given string. - * @return {Array} - */ - - parse: function(input) { - if (typeof input !== 'string') { - throw new TypeError('expected a string'); - } - - this.init(this.options); - this.orig = input; - this.input = input; - var self = this; - - function parse() { - // check input before calling `.next()` - input = self.input; - - // get the next AST ndoe - var node = self.next(); - if (node) { - var prev = self.prev(); - if (prev) { - define(node, 'parent', prev); - if (prev.nodes) { - prev.nodes.push(node); - } - } - - if (self.sets.hasOwnProperty(prev.type)) { - self.currentType = prev.type; - } - } - - // if we got here but input is not changed, throw an error - if (self.input && input === self.input) { - throw new Error('no parsers registered for: "' + self.input.slice(0, 5) + '"'); - } - } - - while (this.input) parse(); - if (this.stack.length && this.options.strict) { - var node = this.stack.pop(); - throw this.error('missing opening ' + node.type + ': "' + this.orig + '"'); - } - - var eos = this.eos(); - var tok = this.prev(); - if (tok.type !== 'eos') { - this.ast.nodes.push(eos); - } - - return this.ast; - } -}; - -/** - * Visit `node` with the given `fn` - */ - -function visit(node, fn) { - if (!node.visited) { - define(node, 'visited', true); - return node.nodes ? mapVisit(node.nodes, fn) : fn(node); - } - return node; -} - -/** - * Map visit over array of `nodes`. - */ - -function mapVisit(nodes, fn) { - var len = nodes.length; - var idx = -1; - while (++idx < len) { - visit(nodes[idx], fn); - } -} - -function hasOpen(node) { - return node.nodes && node.nodes[0].type === (node.type + '.open'); -} - -function hasClose(node) { - return node.nodes && utils.last(node.nodes).type === (node.type + '.close'); -} - -function hasDelims(node) { - return hasOpen(node) && hasClose(node); -} - -/** - * Expose `Parser` - */ - -module.exports = Parser; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/lib/position.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var define = __webpack_require__("../../node_modules/define-property/index.js"); - -/** - * Store position for a node - */ - -module.exports = function Position(start, parser) { - this.start = start; - this.end = { line: parser.line, column: parser.column }; - define(this, 'content', parser.orig); - define(this, 'source', parser.options.source); -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/lib/source-maps.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var fs = __webpack_require__("fs"); -var path = __webpack_require__("path"); -var define = __webpack_require__("../../node_modules/define-property/index.js"); -var utils = __webpack_require__("../../node_modules/snapdragon/lib/utils.js"); - -/** - * Expose `mixin()`. - * This code is based on `source-maps-support.js` in reworkcss/css - * https://github.com/reworkcss/css/blob/master/lib/stringify/source-map-support.js - * Copyright (c) 2012 TJ Holowaychuk - */ - -module.exports = mixin; - -/** - * Mixin source map support into `compiler`. - * - * @param {Object} `compiler` - * @api public - */ - -function mixin(compiler) { - define(compiler, '_comment', compiler.comment); - compiler.map = new utils.SourceMap.SourceMapGenerator(); - compiler.position = { line: 1, column: 1 }; - compiler.content = {}; - compiler.files = {}; - - for (var key in exports) { - define(compiler, key, exports[key]); - } -} - -/** - * Update position. - * - * @param {String} str - */ - -exports.updatePosition = function(str) { - var lines = str.match(/\n/g); - if (lines) this.position.line += lines.length; - var i = str.lastIndexOf('\n'); - this.position.column = ~i ? str.length - i : this.position.column + str.length; -}; - -/** - * Emit `str` with `position`. - * - * @param {String} str - * @param {Object} [pos] - * @return {String} - */ - -exports.emit = function(str, node) { - var position = node.position || {}; - var source = position.source; - if (source) { - if (position.filepath) { - source = utils.unixify(position.filepath); - } - - this.map.addMapping({ - source: source, - generated: { - line: this.position.line, - column: Math.max(this.position.column - 1, 0) - }, - original: { - line: position.start.line, - column: position.start.column - 1 - } - }); - - if (position.content) { - this.addContent(source, position); - } - if (position.filepath) { - this.addFile(source, position); - } - - this.updatePosition(str); - this.output += str; - } - return str; -}; - -/** - * Adds a file to the source map output if it has not already been added - * @param {String} `file` - * @param {Object} `pos` - */ - -exports.addFile = function(file, position) { - if (typeof position.content !== 'string') return; - if (Object.prototype.hasOwnProperty.call(this.files, file)) return; - this.files[file] = position.content; -}; - -/** - * Adds a content source to the source map output if it has not already been added - * @param {String} `source` - * @param {Object} `position` - */ - -exports.addContent = function(source, position) { - if (typeof position.content !== 'string') return; - if (Object.prototype.hasOwnProperty.call(this.content, source)) return; - this.map.setSourceContent(source, position.content); -}; - -/** - * Applies any original source maps to the output and embeds the source file - * contents in the source map. - */ - -exports.applySourceMaps = function() { - Object.keys(this.files).forEach(function(file) { - var content = this.files[file]; - this.map.setSourceContent(file, content); - - if (this.options.inputSourcemaps === true) { - var originalMap = utils.sourceMapResolve.resolveSync(content, file, fs.readFileSync); - if (originalMap) { - var map = new utils.SourceMap.SourceMapConsumer(originalMap.map); - var relativeTo = originalMap.sourcesRelativeTo; - this.map.applySourceMap(map, file, utils.unixify(path.dirname(relativeTo))); - } - } - }, this); -}; - -/** - * Process comments, drops sourceMap comments. - * @param {Object} node - */ - -exports.comment = function(node) { - if (/^# sourceMappingURL=/.test(node.comment)) { - return this.emit('', node.position); - } - return this._comment(node); -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/lib/utils.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Module dependencies - */ - -exports.extend = __webpack_require__("../../node_modules/extend-shallow/index.js"); -exports.SourceMap = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/source-map.js"); -exports.sourceMapResolve = __webpack_require__("../../node_modules/source-map-resolve/lib/source-map-resolve-node.js"); - -/** - * Convert backslash in the given string to forward slashes - */ - -exports.unixify = function(fp) { - return fp.split(/\\+/).join('/'); -}; - -/** - * Return true if `val` is a non-empty string - * - * @param {String} `str` - * @return {Boolean} - */ - -exports.isString = function(str) { - return str && typeof str === 'string'; -}; - -/** - * Cast `val` to an array - * @return {Array} - */ - -exports.arrayify = function(val) { - if (typeof val === 'string') return [val]; - return val ? (Array.isArray(val) ? val : [val]) : []; -}; - -/** - * Get the last `n` element from the given `array` - * @param {Array} `array` - * @return {*} - */ - -exports.last = function(arr, n) { - return arr[arr.length - (n || 1)]; -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/array-set.js": -/***/ (function(module, exports, __webpack_require__) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/util.js"); -var has = Object.prototype.hasOwnProperty; -var hasNativeMap = typeof Map !== "undefined"; - -/** - * A data structure which is a combination of an array and a set. Adding a new - * member is O(1), testing for membership is O(1), and finding the index of an - * element is O(1). Removing elements from the set is not supported. Only - * strings are supported for membership. - */ -function ArraySet() { - this._array = []; - this._set = hasNativeMap ? new Map() : Object.create(null); -} - -/** - * Static method for creating ArraySet instances from an existing array. - */ -ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { - var set = new ArraySet(); - for (var i = 0, len = aArray.length; i < len; i++) { - set.add(aArray[i], aAllowDuplicates); - } - return set; -}; - -/** - * Return how many unique items are in this ArraySet. If duplicates have been - * added, than those do not count towards the size. - * - * @returns Number - */ -ArraySet.prototype.size = function ArraySet_size() { - return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; -}; - -/** - * Add the given string to this set. - * - * @param String aStr - */ -ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { - var sStr = hasNativeMap ? aStr : util.toSetString(aStr); - var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); - var idx = this._array.length; - if (!isDuplicate || aAllowDuplicates) { - this._array.push(aStr); - } - if (!isDuplicate) { - if (hasNativeMap) { - this._set.set(aStr, idx); - } else { - this._set[sStr] = idx; - } - } -}; - -/** - * Is the given string a member of this set? - * - * @param String aStr - */ -ArraySet.prototype.has = function ArraySet_has(aStr) { - if (hasNativeMap) { - return this._set.has(aStr); - } else { - var sStr = util.toSetString(aStr); - return has.call(this._set, sStr); - } -}; - -/** - * What is the index of the given string in the array? - * - * @param String aStr - */ -ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { - if (hasNativeMap) { - var idx = this._set.get(aStr); - if (idx >= 0) { - return idx; - } - } else { - var sStr = util.toSetString(aStr); - if (has.call(this._set, sStr)) { - return this._set[sStr]; - } - } - - throw new Error('"' + aStr + '" is not in the set.'); -}; - -/** - * What is the element at the given index? - * - * @param Number aIdx - */ -ArraySet.prototype.at = function ArraySet_at(aIdx) { - if (aIdx >= 0 && aIdx < this._array.length) { - return this._array[aIdx]; - } - throw new Error('No element indexed by ' + aIdx); -}; - -/** - * Returns the array representation of this set (which has the proper indices - * indicated by indexOf). Note that this is a copy of the internal array used - * for storing the members so that no one can mess with internal state. - */ -ArraySet.prototype.toArray = function ArraySet_toArray() { - return this._array.slice(); -}; - -exports.ArraySet = ArraySet; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js": -/***/ (function(module, exports, __webpack_require__) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - * - * Based on the Base 64 VLQ implementation in Closure Compiler: - * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java - * - * Copyright 2011 The Closure Compiler Authors. All rights reserved. - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Google Inc. nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -var base64 = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/base64.js"); - -// A single base 64 digit can contain 6 bits of data. For the base 64 variable -// length quantities we use in the source map spec, the first bit is the sign, -// the next four bits are the actual value, and the 6th bit is the -// continuation bit. The continuation bit tells us whether there are more -// digits in this value following this digit. -// -// Continuation -// | Sign -// | | -// V V -// 101011 - -var VLQ_BASE_SHIFT = 5; - -// binary: 100000 -var VLQ_BASE = 1 << VLQ_BASE_SHIFT; - -// binary: 011111 -var VLQ_BASE_MASK = VLQ_BASE - 1; - -// binary: 100000 -var VLQ_CONTINUATION_BIT = VLQ_BASE; - -/** - * Converts from a two-complement value to a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) - * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) - */ -function toVLQSigned(aValue) { - return aValue < 0 - ? ((-aValue) << 1) + 1 - : (aValue << 1) + 0; -} - -/** - * Converts to a two-complement value from a value where the sign bit is - * placed in the least significant bit. For example, as decimals: - * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 - * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 - */ -function fromVLQSigned(aValue) { - var isNegative = (aValue & 1) === 1; - var shifted = aValue >> 1; - return isNegative - ? -shifted - : shifted; -} - -/** - * Returns the base 64 VLQ encoded value. - */ -exports.encode = function base64VLQ_encode(aValue) { - var encoded = ""; - var digit; - - var vlq = toVLQSigned(aValue); - - do { - digit = vlq & VLQ_BASE_MASK; - vlq >>>= VLQ_BASE_SHIFT; - if (vlq > 0) { - // There are still more digits in this value, so we must make sure the - // continuation bit is marked. - digit |= VLQ_CONTINUATION_BIT; - } - encoded += base64.encode(digit); - } while (vlq > 0); - - return encoded; -}; - -/** - * Decodes the next base 64 VLQ value from the given string and returns the - * value and the rest of the string via the out parameter. - */ -exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { - var strLen = aStr.length; - var result = 0; - var shift = 0; - var continuation, digit; - - do { - if (aIndex >= strLen) { - throw new Error("Expected more digits in base 64 VLQ value."); - } - - digit = base64.decode(aStr.charCodeAt(aIndex++)); - if (digit === -1) { - throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); - } - - continuation = !!(digit & VLQ_CONTINUATION_BIT); - digit &= VLQ_BASE_MASK; - result = result + (digit << shift); - shift += VLQ_BASE_SHIFT; - } while (continuation); - - aOutParam.value = fromVLQSigned(result); - aOutParam.rest = aIndex; -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/base64.js": -/***/ (function(module, exports) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - -/** - * Encode an integer in the range of 0 to 63 to a single base 64 digit. - */ -exports.encode = function (number) { - if (0 <= number && number < intToCharMap.length) { - return intToCharMap[number]; - } - throw new TypeError("Must be between 0 and 63: " + number); -}; - -/** - * Decode a single base 64 character code digit to an integer. Returns -1 on - * failure. - */ -exports.decode = function (charCode) { - var bigA = 65; // 'A' - var bigZ = 90; // 'Z' - - var littleA = 97; // 'a' - var littleZ = 122; // 'z' - - var zero = 48; // '0' - var nine = 57; // '9' - - var plus = 43; // '+' - var slash = 47; // '/' - - var littleOffset = 26; - var numberOffset = 52; - - // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ - if (bigA <= charCode && charCode <= bigZ) { - return (charCode - bigA); - } - - // 26 - 51: abcdefghijklmnopqrstuvwxyz - if (littleA <= charCode && charCode <= littleZ) { - return (charCode - littleA + littleOffset); - } - - // 52 - 61: 0123456789 - if (zero <= charCode && charCode <= nine) { - return (charCode - zero + numberOffset); - } - - // 62: + - if (charCode == plus) { - return 62; - } - - // 63: / - if (charCode == slash) { - return 63; - } - - // Invalid base64 digit. - return -1; -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/binary-search.js": -/***/ (function(module, exports) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -exports.GREATEST_LOWER_BOUND = 1; -exports.LEAST_UPPER_BOUND = 2; - -/** - * Recursive implementation of binary search. - * - * @param aLow Indices here and lower do not contain the needle. - * @param aHigh Indices here and higher do not contain the needle. - * @param aNeedle The element being searched for. - * @param aHaystack The non-empty array being searched. - * @param aCompare Function which takes two elements and returns -1, 0, or 1. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - */ -function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { - // This function terminates when one of the following is true: - // - // 1. We find the exact element we are looking for. - // - // 2. We did not find the exact element, but we can return the index of - // the next-closest element. - // - // 3. We did not find the exact element, and there is no next-closest - // element than the one we are searching for, so we return -1. - var mid = Math.floor((aHigh - aLow) / 2) + aLow; - var cmp = aCompare(aNeedle, aHaystack[mid], true); - if (cmp === 0) { - // Found the element we are looking for. - return mid; - } - else if (cmp > 0) { - // Our needle is greater than aHaystack[mid]. - if (aHigh - mid > 1) { - // The element is in the upper half. - return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); - } - - // The exact needle element was not found in this haystack. Determine if - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return aHigh < aHaystack.length ? aHigh : -1; - } else { - return mid; - } - } - else { - // Our needle is less than aHaystack[mid]. - if (mid - aLow > 1) { - // The element is in the lower half. - return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); - } - - // we are in termination case (3) or (2) and return the appropriate thing. - if (aBias == exports.LEAST_UPPER_BOUND) { - return mid; - } else { - return aLow < 0 ? -1 : aLow; - } - } -} - -/** - * This is an implementation of binary search which will always try and return - * the index of the closest element if there is no exact hit. This is because - * mappings between original and generated line/col pairs are single points, - * and there is an implicit region between each of them, so a miss just means - * that you aren't on the very start of a region. - * - * @param aNeedle The element you are looking for. - * @param aHaystack The array that is being searched. - * @param aCompare A function which takes the needle and an element in the - * array and returns -1, 0, or 1 depending on whether the needle is less - * than, equal to, or greater than the element, respectively. - * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or - * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. - */ -exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { - if (aHaystack.length === 0) { - return -1; - } - - var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, - aCompare, aBias || exports.GREATEST_LOWER_BOUND); - if (index < 0) { - return -1; - } - - // We have found either the exact element, or the next-closest element than - // the one we are searching for. However, there may be more than one such - // element. Make sure we always return the smallest of these. - while (index - 1 >= 0) { - if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { - break; - } - --index; - } - - return index; -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/mapping-list.js": -/***/ (function(module, exports, __webpack_require__) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2014 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/util.js"); - -/** - * Determine whether mappingB is after mappingA with respect to generated - * position. - */ -function generatedPositionAfter(mappingA, mappingB) { - // Optimized for most common case - var lineA = mappingA.generatedLine; - var lineB = mappingB.generatedLine; - var columnA = mappingA.generatedColumn; - var columnB = mappingB.generatedColumn; - return lineB > lineA || lineB == lineA && columnB >= columnA || - util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; -} - -/** - * A data structure to provide a sorted view of accumulated mappings in a - * performance conscious manner. It trades a neglibable overhead in general - * case for a large speedup in case of mappings being added in order. - */ -function MappingList() { - this._array = []; - this._sorted = true; - // Serves as infimum - this._last = {generatedLine: -1, generatedColumn: 0}; -} - -/** - * Iterate through internal items. This method takes the same arguments that - * `Array.prototype.forEach` takes. - * - * NOTE: The order of the mappings is NOT guaranteed. - */ -MappingList.prototype.unsortedForEach = - function MappingList_forEach(aCallback, aThisArg) { - this._array.forEach(aCallback, aThisArg); - }; - -/** - * Add the given source mapping. - * - * @param Object aMapping - */ -MappingList.prototype.add = function MappingList_add(aMapping) { - if (generatedPositionAfter(this._last, aMapping)) { - this._last = aMapping; - this._array.push(aMapping); - } else { - this._sorted = false; - this._array.push(aMapping); - } -}; - -/** - * Returns the flat, sorted array of mappings. The mappings are sorted by - * generated position. - * - * WARNING: This method returns internal data without copying, for - * performance. The return value must NOT be mutated, and should be treated as - * an immutable borrow. If you want to take ownership, you must make your own - * copy. - */ -MappingList.prototype.toArray = function MappingList_toArray() { - if (!this._sorted) { - this._array.sort(util.compareByGeneratedPositionsInflated); - this._sorted = true; - } - return this._array; -}; - -exports.MappingList = MappingList; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/quick-sort.js": -/***/ (function(module, exports) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -// It turns out that some (most?) JavaScript engines don't self-host -// `Array.prototype.sort`. This makes sense because C++ will likely remain -// faster than JS when doing raw CPU-intensive sorting. However, when using a -// custom comparator function, calling back and forth between the VM's C++ and -// JIT'd JS is rather slow *and* loses JIT type information, resulting in -// worse generated code for the comparator function than would be optimal. In -// fact, when sorting with a comparator, these costs outweigh the benefits of -// sorting in C++. By using our own JS-implemented Quick Sort (below), we get -// a ~3500ms mean speed-up in `bench/bench.html`. - -/** - * Swap the elements indexed by `x` and `y` in the array `ary`. - * - * @param {Array} ary - * The array. - * @param {Number} x - * The index of the first item. - * @param {Number} y - * The index of the second item. - */ -function swap(ary, x, y) { - var temp = ary[x]; - ary[x] = ary[y]; - ary[y] = temp; -} - -/** - * Returns a random integer within the range `low .. high` inclusive. - * - * @param {Number} low - * The lower bound on the range. - * @param {Number} high - * The upper bound on the range. - */ -function randomIntInRange(low, high) { - return Math.round(low + (Math.random() * (high - low))); -} - -/** - * The Quick Sort algorithm. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - * @param {Number} p - * Start index of the array - * @param {Number} r - * End index of the array - */ -function doQuickSort(ary, comparator, p, r) { - // If our lower bound is less than our upper bound, we (1) partition the - // array into two pieces and (2) recurse on each half. If it is not, this is - // the empty array and our base case. - - if (p < r) { - // (1) Partitioning. - // - // The partitioning chooses a pivot between `p` and `r` and moves all - // elements that are less than or equal to the pivot to the before it, and - // all the elements that are greater than it after it. The effect is that - // once partition is done, the pivot is in the exact place it will be when - // the array is put in sorted order, and it will not need to be moved - // again. This runs in O(n) time. - - // Always choose a random pivot so that an input array which is reverse - // sorted does not cause O(n^2) running time. - var pivotIndex = randomIntInRange(p, r); - var i = p - 1; - - swap(ary, pivotIndex, r); - var pivot = ary[r]; - - // Immediately after `j` is incremented in this loop, the following hold - // true: - // - // * Every element in `ary[p .. i]` is less than or equal to the pivot. - // - // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. - for (var j = p; j < r; j++) { - if (comparator(ary[j], pivot) <= 0) { - i += 1; - swap(ary, i, j); - } - } - - swap(ary, i + 1, j); - var q = i + 1; - - // (2) Recurse on each half. - - doQuickSort(ary, comparator, p, q - 1); - doQuickSort(ary, comparator, q + 1, r); - } -} - -/** - * Sort the given array in-place with the given comparator function. - * - * @param {Array} ary - * An array to sort. - * @param {function} comparator - * Function to use to compare two items. - */ -exports.quickSort = function (ary, comparator) { - doQuickSort(ary, comparator, 0, ary.length - 1); -}; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/source-map-consumer.js": -/***/ (function(module, exports, __webpack_require__) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var util = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/util.js"); -var binarySearch = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/binary-search.js"); -var ArraySet = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/array-set.js").ArraySet; -var base64VLQ = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js"); -var quickSort = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/quick-sort.js").quickSort; - -function SourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - return sourceMap.sections != null - ? new IndexedSourceMapConsumer(sourceMap) - : new BasicSourceMapConsumer(sourceMap); -} - -SourceMapConsumer.fromSourceMap = function(aSourceMap) { - return BasicSourceMapConsumer.fromSourceMap(aSourceMap); -} - -/** - * The version of the source mapping spec that we are consuming. - */ -SourceMapConsumer.prototype._version = 3; - -// `__generatedMappings` and `__originalMappings` are arrays that hold the -// parsed mapping coordinates from the source map's "mappings" attribute. They -// are lazily instantiated, accessed via the `_generatedMappings` and -// `_originalMappings` getters respectively, and we only parse the mappings -// and create these arrays once queried for a source location. We jump through -// these hoops because there can be many thousands of mappings, and parsing -// them is expensive, so we only want to do it if we must. -// -// Each object in the arrays is of the form: -// -// { -// generatedLine: The line number in the generated code, -// generatedColumn: The column number in the generated code, -// source: The path to the original source file that generated this -// chunk of code, -// originalLine: The line number in the original source that -// corresponds to this chunk of generated code, -// originalColumn: The column number in the original source that -// corresponds to this chunk of generated code, -// name: The name of the original symbol which generated this chunk of -// code. -// } -// -// All properties except for `generatedLine` and `generatedColumn` can be -// `null`. -// -// `_generatedMappings` is ordered by the generated positions. -// -// `_originalMappings` is ordered by the original positions. - -SourceMapConsumer.prototype.__generatedMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { - get: function () { - if (!this.__generatedMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__generatedMappings; - } -}); - -SourceMapConsumer.prototype.__originalMappings = null; -Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { - get: function () { - if (!this.__originalMappings) { - this._parseMappings(this._mappings, this.sourceRoot); - } - - return this.__originalMappings; - } -}); - -SourceMapConsumer.prototype._charIsMappingSeparator = - function SourceMapConsumer_charIsMappingSeparator(aStr, index) { - var c = aStr.charAt(index); - return c === ";" || c === ","; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -SourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - throw new Error("Subclasses must implement _parseMappings"); - }; - -SourceMapConsumer.GENERATED_ORDER = 1; -SourceMapConsumer.ORIGINAL_ORDER = 2; - -SourceMapConsumer.GREATEST_LOWER_BOUND = 1; -SourceMapConsumer.LEAST_UPPER_BOUND = 2; - -/** - * Iterate over each mapping between an original source/line/column and a - * generated line/column in this source map. - * - * @param Function aCallback - * The function that is called with each mapping. - * @param Object aContext - * Optional. If specified, this object will be the value of `this` every - * time that `aCallback` is called. - * @param aOrder - * Either `SourceMapConsumer.GENERATED_ORDER` or - * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to - * iterate over the mappings sorted by the generated file's line/column - * order or the original's source/line/column order, respectively. Defaults to - * `SourceMapConsumer.GENERATED_ORDER`. - */ -SourceMapConsumer.prototype.eachMapping = - function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { - var context = aContext || null; - var order = aOrder || SourceMapConsumer.GENERATED_ORDER; - - var mappings; - switch (order) { - case SourceMapConsumer.GENERATED_ORDER: - mappings = this._generatedMappings; - break; - case SourceMapConsumer.ORIGINAL_ORDER: - mappings = this._originalMappings; - break; - default: - throw new Error("Unknown order of iteration."); - } - - var sourceRoot = this.sourceRoot; - mappings.map(function (mapping) { - var source = mapping.source === null ? null : this._sources.at(mapping.source); - if (source != null && sourceRoot != null) { - source = util.join(sourceRoot, source); - } - return { - source: source, - generatedLine: mapping.generatedLine, - generatedColumn: mapping.generatedColumn, - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: mapping.name === null ? null : this._names.at(mapping.name) - }; - }, this).forEach(aCallback, context); - }; - -/** - * Returns all generated line and column information for the original source, - * line, and column provided. If no column is provided, returns all mappings - * corresponding to a either the line we are searching for or the next - * closest line that has any mappings. Otherwise, returns all mappings - * corresponding to the given line and either the column we are searching for - * or the next closest column that has any offsets. - * - * The only argument is an object with the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: Optional. the column number in the original source. - * - * and an array of objects is returned, each with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -SourceMapConsumer.prototype.allGeneratedPositionsFor = - function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { - var line = util.getArg(aArgs, 'line'); - - // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping - // returns the index of the closest mapping less than the needle. By - // setting needle.originalColumn to 0, we thus find the last mapping for - // the given line, provided such a mapping exists. - var needle = { - source: util.getArg(aArgs, 'source'), - originalLine: line, - originalColumn: util.getArg(aArgs, 'column', 0) - }; - - if (this.sourceRoot != null) { - needle.source = util.relative(this.sourceRoot, needle.source); - } - if (!this._sources.has(needle.source)) { - return []; - } - needle.source = this._sources.indexOf(needle.source); - - var mappings = []; - - var index = this._findMapping(needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - binarySearch.LEAST_UPPER_BOUND); - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (aArgs.column === undefined) { - var originalLine = mapping.originalLine; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we found. Since - // mappings are sorted, this is guaranteed to find all mappings for - // the line we found. - while (mapping && mapping.originalLine === originalLine) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } else { - var originalColumn = mapping.originalColumn; - - // Iterate until either we run out of mappings, or we run into - // a mapping for a different line than the one we were searching for. - // Since mappings are sorted, this is guaranteed to find all mappings for - // the line we are searching for. - while (mapping && - mapping.originalLine === line && - mapping.originalColumn == originalColumn) { - mappings.push({ - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }); - - mapping = this._originalMappings[++index]; - } - } - } - - return mappings; - }; - -exports.SourceMapConsumer = SourceMapConsumer; - -/** - * A BasicSourceMapConsumer instance represents a parsed source map which we can - * query for information about the original file positions by giving it a file - * position in the generated source. - * - * The only parameter is the raw source map (either as a JSON string, or - * already parsed to an object). According to the spec, source maps have the - * following attributes: - * - * - version: Which version of the source map spec this map is following. - * - sources: An array of URLs to the original source files. - * - names: An array of identifiers which can be referrenced by individual mappings. - * - sourceRoot: Optional. The URL root from which all sources are relative. - * - sourcesContent: Optional. An array of contents of the original source files. - * - mappings: A string of base64 VLQs which contain the actual mappings. - * - file: Optional. The generated file this source map is associated with. - * - * Here is an example source map, taken from the source map spec[0]: - * - * { - * version : 3, - * file: "out.js", - * sourceRoot : "", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AA,AB;;ABCDE;" - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# - */ -function BasicSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sources = util.getArg(sourceMap, 'sources'); - // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which - // requires the array) to play nice here. - var names = util.getArg(sourceMap, 'names', []); - var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); - var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); - var mappings = util.getArg(sourceMap, 'mappings'); - var file = util.getArg(sourceMap, 'file', null); - - // Once again, Sass deviates from the spec and supplies the version as a - // string rather than a number, so we use loose equality checking here. - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - sources = sources - .map(String) - // Some source maps produce relative source paths like "./foo.js" instead of - // "foo.js". Normalize these first so that future comparisons will succeed. - // See bugzil.la/1090768. - .map(util.normalize) - // Always ensure that absolute sources are internally stored relative to - // the source root, if the source root is absolute. Not doing this would - // be particularly problematic when the source root is a prefix of the - // source (valid, but why??). See github issue #199 and bugzil.la/1188982. - .map(function (source) { - return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) - ? util.relative(sourceRoot, source) - : source; - }); - - // Pass `true` below to allow duplicate names and sources. While source maps - // are intended to be compressed and deduplicated, the TypeScript compiler - // sometimes generates source maps with duplicates in them. See Github issue - // #72 and bugzil.la/889492. - this._names = ArraySet.fromArray(names.map(String), true); - this._sources = ArraySet.fromArray(sources, true); - - this.sourceRoot = sourceRoot; - this.sourcesContent = sourcesContent; - this._mappings = mappings; - this.file = file; -} - -BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; - -/** - * Create a BasicSourceMapConsumer from a SourceMapGenerator. - * - * @param SourceMapGenerator aSourceMap - * The source map that will be consumed. - * @returns BasicSourceMapConsumer - */ -BasicSourceMapConsumer.fromSourceMap = - function SourceMapConsumer_fromSourceMap(aSourceMap) { - var smc = Object.create(BasicSourceMapConsumer.prototype); - - var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); - var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); - smc.sourceRoot = aSourceMap._sourceRoot; - smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), - smc.sourceRoot); - smc.file = aSourceMap._file; - - // Because we are modifying the entries (by converting string sources and - // names to indices into the sources and names ArraySets), we have to make - // a copy of the entry or else bad things happen. Shared mutable state - // strikes again! See github issue #191. - - var generatedMappings = aSourceMap._mappings.toArray().slice(); - var destGeneratedMappings = smc.__generatedMappings = []; - var destOriginalMappings = smc.__originalMappings = []; - - for (var i = 0, length = generatedMappings.length; i < length; i++) { - var srcMapping = generatedMappings[i]; - var destMapping = new Mapping; - destMapping.generatedLine = srcMapping.generatedLine; - destMapping.generatedColumn = srcMapping.generatedColumn; - - if (srcMapping.source) { - destMapping.source = sources.indexOf(srcMapping.source); - destMapping.originalLine = srcMapping.originalLine; - destMapping.originalColumn = srcMapping.originalColumn; - - if (srcMapping.name) { - destMapping.name = names.indexOf(srcMapping.name); - } - - destOriginalMappings.push(destMapping); - } - - destGeneratedMappings.push(destMapping); - } - - quickSort(smc.__originalMappings, util.compareByOriginalPositions); - - return smc; - }; - -/** - * The version of the source mapping spec that we are consuming. - */ -BasicSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { - get: function () { - return this._sources.toArray().map(function (s) { - return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s; - }, this); - } -}); - -/** - * Provide the JIT with a nice shape / hidden class. - */ -function Mapping() { - this.generatedLine = 0; - this.generatedColumn = 0; - this.source = null; - this.originalLine = null; - this.originalColumn = null; - this.name = null; -} - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -BasicSourceMapConsumer.prototype._parseMappings = - function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { - var generatedLine = 1; - var previousGeneratedColumn = 0; - var previousOriginalLine = 0; - var previousOriginalColumn = 0; - var previousSource = 0; - var previousName = 0; - var length = aStr.length; - var index = 0; - var cachedSegments = {}; - var temp = {}; - var originalMappings = []; - var generatedMappings = []; - var mapping, str, segment, end, value; - - while (index < length) { - if (aStr.charAt(index) === ';') { - generatedLine++; - index++; - previousGeneratedColumn = 0; - } - else if (aStr.charAt(index) === ',') { - index++; - } - else { - mapping = new Mapping(); - mapping.generatedLine = generatedLine; - - // Because each offset is encoded relative to the previous one, - // many segments often have the same encoding. We can exploit this - // fact by caching the parsed variable length fields of each segment, - // allowing us to avoid a second parse if we encounter the same - // segment again. - for (end = index; end < length; end++) { - if (this._charIsMappingSeparator(aStr, end)) { - break; - } - } - str = aStr.slice(index, end); - - segment = cachedSegments[str]; - if (segment) { - index += str.length; - } else { - segment = []; - while (index < end) { - base64VLQ.decode(aStr, index, temp); - value = temp.value; - index = temp.rest; - segment.push(value); - } - - if (segment.length === 2) { - throw new Error('Found a source, but no line and column'); - } - - if (segment.length === 3) { - throw new Error('Found a source and line, but no column'); - } - - cachedSegments[str] = segment; - } - - // Generated column. - mapping.generatedColumn = previousGeneratedColumn + segment[0]; - previousGeneratedColumn = mapping.generatedColumn; - - if (segment.length > 1) { - // Original source. - mapping.source = previousSource + segment[1]; - previousSource += segment[1]; - - // Original line. - mapping.originalLine = previousOriginalLine + segment[2]; - previousOriginalLine = mapping.originalLine; - // Lines are stored 0-based - mapping.originalLine += 1; - - // Original column. - mapping.originalColumn = previousOriginalColumn + segment[3]; - previousOriginalColumn = mapping.originalColumn; - - if (segment.length > 4) { - // Original name. - mapping.name = previousName + segment[4]; - previousName += segment[4]; - } - } - - generatedMappings.push(mapping); - if (typeof mapping.originalLine === 'number') { - originalMappings.push(mapping); - } - } - } - - quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated); - this.__generatedMappings = generatedMappings; - - quickSort(originalMappings, util.compareByOriginalPositions); - this.__originalMappings = originalMappings; - }; - -/** - * Find the mapping that best matches the hypothetical "needle" mapping that - * we are searching for in the given "haystack" of mappings. - */ -BasicSourceMapConsumer.prototype._findMapping = - function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, - aColumnName, aComparator, aBias) { - // To return the position we are searching for, we must first find the - // mapping for the given position and then return the opposite position it - // points to. Because the mappings are sorted, we can use binary search to - // find the best mapping. - - if (aNeedle[aLineName] <= 0) { - throw new TypeError('Line must be greater than or equal to 1, got ' - + aNeedle[aLineName]); - } - if (aNeedle[aColumnName] < 0) { - throw new TypeError('Column must be greater than or equal to 0, got ' - + aNeedle[aColumnName]); - } - - return binarySearch.search(aNeedle, aMappings, aComparator, aBias); - }; - -/** - * Compute the last column for each generated mapping. The last column is - * inclusive. - */ -BasicSourceMapConsumer.prototype.computeColumnSpans = - function SourceMapConsumer_computeColumnSpans() { - for (var index = 0; index < this._generatedMappings.length; ++index) { - var mapping = this._generatedMappings[index]; - - // Mappings do not contain a field for the last generated columnt. We - // can come up with an optimistic estimate, however, by assuming that - // mappings are contiguous (i.e. given two consecutive mappings, the - // first mapping ends where the second one starts). - if (index + 1 < this._generatedMappings.length) { - var nextMapping = this._generatedMappings[index + 1]; - - if (mapping.generatedLine === nextMapping.generatedLine) { - mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; - continue; - } - } - - // The last mapping for each line spans the entire line. - mapping.lastGeneratedColumn = Infinity; - } - }; - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ -BasicSourceMapConsumer.prototype.originalPositionFor = - function SourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._generatedMappings, - "generatedLine", - "generatedColumn", - util.compareByGeneratedPositionsDeflated, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._generatedMappings[index]; - - if (mapping.generatedLine === needle.generatedLine) { - var source = util.getArg(mapping, 'source', null); - if (source !== null) { - source = this._sources.at(source); - if (this.sourceRoot != null) { - source = util.join(this.sourceRoot, source); - } - } - var name = util.getArg(mapping, 'name', null); - if (name !== null) { - name = this._names.at(name); - } - return { - source: source, - line: util.getArg(mapping, 'originalLine', null), - column: util.getArg(mapping, 'originalColumn', null), - name: name - }; - } - } - - return { - source: null, - line: null, - column: null, - name: null - }; - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -BasicSourceMapConsumer.prototype.hasContentsOfAllSources = - function BasicSourceMapConsumer_hasContentsOfAllSources() { - if (!this.sourcesContent) { - return false; - } - return this.sourcesContent.length >= this._sources.size() && - !this.sourcesContent.some(function (sc) { return sc == null; }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -BasicSourceMapConsumer.prototype.sourceContentFor = - function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - if (!this.sourcesContent) { - return null; - } - - if (this.sourceRoot != null) { - aSource = util.relative(this.sourceRoot, aSource); - } - - if (this._sources.has(aSource)) { - return this.sourcesContent[this._sources.indexOf(aSource)]; - } - - var url; - if (this.sourceRoot != null - && (url = util.urlParse(this.sourceRoot))) { - // XXX: file:// URIs and absolute paths lead to unexpected behavior for - // many users. We can help them out when they expect file:// URIs to - // behave like it would if they were running a local HTTP server. See - // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. - var fileUriAbsPath = aSource.replace(/^file:\/\//, ""); - if (url.scheme == "file" - && this._sources.has(fileUriAbsPath)) { - return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] - } - - if ((!url.path || url.path == "/") - && this._sources.has("/" + aSource)) { - return this.sourcesContent[this._sources.indexOf("/" + aSource)]; - } - } - - // This function is used recursively from - // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we - // don't want to throw if we can't find the source - we just want to - // return null, so we provide a flag to exit gracefully. - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or - * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the - * closest element that is smaller than or greater than the one we are - * searching for, respectively, if the exact element cannot be found. - * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -BasicSourceMapConsumer.prototype.generatedPositionFor = - function SourceMapConsumer_generatedPositionFor(aArgs) { - var source = util.getArg(aArgs, 'source'); - if (this.sourceRoot != null) { - source = util.relative(this.sourceRoot, source); - } - if (!this._sources.has(source)) { - return { - line: null, - column: null, - lastColumn: null - }; - } - source = this._sources.indexOf(source); - - var needle = { - source: source, - originalLine: util.getArg(aArgs, 'line'), - originalColumn: util.getArg(aArgs, 'column') - }; - - var index = this._findMapping( - needle, - this._originalMappings, - "originalLine", - "originalColumn", - util.compareByOriginalPositions, - util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) - ); - - if (index >= 0) { - var mapping = this._originalMappings[index]; - - if (mapping.source === needle.source) { - return { - line: util.getArg(mapping, 'generatedLine', null), - column: util.getArg(mapping, 'generatedColumn', null), - lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) - }; - } - } - - return { - line: null, - column: null, - lastColumn: null - }; - }; - -exports.BasicSourceMapConsumer = BasicSourceMapConsumer; - -/** - * An IndexedSourceMapConsumer instance represents a parsed source map which - * we can query for information. It differs from BasicSourceMapConsumer in - * that it takes "indexed" source maps (i.e. ones with a "sections" field) as - * input. - * - * The only parameter is a raw source map (either as a JSON string, or already - * parsed to an object). According to the spec for indexed source maps, they - * have the following attributes: - * - * - version: Which version of the source map spec this map is following. - * - file: Optional. The generated file this source map is associated with. - * - sections: A list of section definitions. - * - * Each value under the "sections" field has two fields: - * - offset: The offset into the original specified at which this section - * begins to apply, defined as an object with a "line" and "column" - * field. - * - map: A source map definition. This source map could also be indexed, - * but doesn't have to be. - * - * Instead of the "map" field, it's also possible to have a "url" field - * specifying a URL to retrieve a source map from, but that's currently - * unsupported. - * - * Here's an example source map, taken from the source map spec[0], but - * modified to omit a section which uses the "url" field. - * - * { - * version : 3, - * file: "app.js", - * sections: [{ - * offset: {line:100, column:10}, - * map: { - * version : 3, - * file: "section.js", - * sources: ["foo.js", "bar.js"], - * names: ["src", "maps", "are", "fun"], - * mappings: "AAAA,E;;ABCDE;" - * } - * }], - * } - * - * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt - */ -function IndexedSourceMapConsumer(aSourceMap) { - var sourceMap = aSourceMap; - if (typeof aSourceMap === 'string') { - sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, '')); - } - - var version = util.getArg(sourceMap, 'version'); - var sections = util.getArg(sourceMap, 'sections'); - - if (version != this._version) { - throw new Error('Unsupported version: ' + version); - } - - this._sources = new ArraySet(); - this._names = new ArraySet(); - - var lastOffset = { - line: -1, - column: 0 - }; - this._sections = sections.map(function (s) { - if (s.url) { - // The url field will require support for asynchronicity. - // See https://github.com/mozilla/source-map/issues/16 - throw new Error('Support for url field in sections not implemented.'); - } - var offset = util.getArg(s, 'offset'); - var offsetLine = util.getArg(offset, 'line'); - var offsetColumn = util.getArg(offset, 'column'); - - if (offsetLine < lastOffset.line || - (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { - throw new Error('Section offsets must be ordered and non-overlapping.'); - } - lastOffset = offset; - - return { - generatedOffset: { - // The offset fields are 0-based, but we use 1-based indices when - // encoding/decoding from VLQ. - generatedLine: offsetLine + 1, - generatedColumn: offsetColumn + 1 - }, - consumer: new SourceMapConsumer(util.getArg(s, 'map')) - } - }); -} - -IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); -IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; - -/** - * The version of the source mapping spec that we are consuming. - */ -IndexedSourceMapConsumer.prototype._version = 3; - -/** - * The list of original sources. - */ -Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { - get: function () { - var sources = []; - for (var i = 0; i < this._sections.length; i++) { - for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { - sources.push(this._sections[i].consumer.sources[j]); - } - } - return sources; - } -}); - -/** - * Returns the original source, line, and column information for the generated - * source's line and column positions provided. The only argument is an object - * with the following properties: - * - * - line: The line number in the generated source. - * - column: The column number in the generated source. - * - * and an object is returned with the following properties: - * - * - source: The original source file, or null. - * - line: The line number in the original source, or null. - * - column: The column number in the original source, or null. - * - name: The original identifier, or null. - */ -IndexedSourceMapConsumer.prototype.originalPositionFor = - function IndexedSourceMapConsumer_originalPositionFor(aArgs) { - var needle = { - generatedLine: util.getArg(aArgs, 'line'), - generatedColumn: util.getArg(aArgs, 'column') - }; - - // Find the section containing the generated position we're trying to map - // to an original position. - var sectionIndex = binarySearch.search(needle, this._sections, - function(needle, section) { - var cmp = needle.generatedLine - section.generatedOffset.generatedLine; - if (cmp) { - return cmp; - } - - return (needle.generatedColumn - - section.generatedOffset.generatedColumn); - }); - var section = this._sections[sectionIndex]; - - if (!section) { - return { - source: null, - line: null, - column: null, - name: null - }; - } - - return section.consumer.originalPositionFor({ - line: needle.generatedLine - - (section.generatedOffset.generatedLine - 1), - column: needle.generatedColumn - - (section.generatedOffset.generatedLine === needle.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - bias: aArgs.bias - }); - }; - -/** - * Return true if we have the source content for every source in the source - * map, false otherwise. - */ -IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = - function IndexedSourceMapConsumer_hasContentsOfAllSources() { - return this._sections.every(function (s) { - return s.consumer.hasContentsOfAllSources(); - }); - }; - -/** - * Returns the original source content. The only argument is the url of the - * original source file. Returns null if no original source content is - * available. - */ -IndexedSourceMapConsumer.prototype.sourceContentFor = - function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - var content = section.consumer.sourceContentFor(aSource, true); - if (content) { - return content; - } - } - if (nullOnMissing) { - return null; - } - else { - throw new Error('"' + aSource + '" is not in the SourceMap.'); - } - }; - -/** - * Returns the generated line and column information for the original source, - * line, and column positions provided. The only argument is an object with - * the following properties: - * - * - source: The filename of the original source. - * - line: The line number in the original source. - * - column: The column number in the original source. - * - * and an object is returned with the following properties: - * - * - line: The line number in the generated source, or null. - * - column: The column number in the generated source, or null. - */ -IndexedSourceMapConsumer.prototype.generatedPositionFor = - function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - - // Only consider this section if the requested source is in the list of - // sources of the consumer. - if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) { - continue; - } - var generatedPosition = section.consumer.generatedPositionFor(aArgs); - if (generatedPosition) { - var ret = { - line: generatedPosition.line + - (section.generatedOffset.generatedLine - 1), - column: generatedPosition.column + - (section.generatedOffset.generatedLine === generatedPosition.line - ? section.generatedOffset.generatedColumn - 1 - : 0) - }; - return ret; - } - } - - return { - line: null, - column: null - }; - }; - -/** - * Parse the mappings in a string in to a data structure which we can easily - * query (the ordered arrays in the `this.__generatedMappings` and - * `this.__originalMappings` properties). - */ -IndexedSourceMapConsumer.prototype._parseMappings = - function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { - this.__generatedMappings = []; - this.__originalMappings = []; - for (var i = 0; i < this._sections.length; i++) { - var section = this._sections[i]; - var sectionMappings = section.consumer._generatedMappings; - for (var j = 0; j < sectionMappings.length; j++) { - var mapping = sectionMappings[j]; - - var source = section.consumer._sources.at(mapping.source); - if (section.consumer.sourceRoot !== null) { - source = util.join(section.consumer.sourceRoot, source); - } - this._sources.add(source); - source = this._sources.indexOf(source); - - var name = section.consumer._names.at(mapping.name); - this._names.add(name); - name = this._names.indexOf(name); - - // The mappings coming from the consumer for the section have - // generated positions relative to the start of the section, so we - // need to offset them to be relative to the start of the concatenated - // generated file. - var adjustedMapping = { - source: source, - generatedLine: mapping.generatedLine + - (section.generatedOffset.generatedLine - 1), - generatedColumn: mapping.generatedColumn + - (section.generatedOffset.generatedLine === mapping.generatedLine - ? section.generatedOffset.generatedColumn - 1 - : 0), - originalLine: mapping.originalLine, - originalColumn: mapping.originalColumn, - name: name - }; - - this.__generatedMappings.push(adjustedMapping); - if (typeof adjustedMapping.originalLine === 'number') { - this.__originalMappings.push(adjustedMapping); - } - } - } - - quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); - quickSort(this.__originalMappings, util.compareByOriginalPositions); - }; - -exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js": -/***/ (function(module, exports, __webpack_require__) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var base64VLQ = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/base64-vlq.js"); -var util = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/util.js"); -var ArraySet = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/array-set.js").ArraySet; -var MappingList = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/mapping-list.js").MappingList; - -/** - * An instance of the SourceMapGenerator represents a source map which is - * being built incrementally. You may pass an object with the following - * properties: - * - * - file: The filename of the generated source. - * - sourceRoot: A root for all relative URLs in this source map. - */ -function SourceMapGenerator(aArgs) { - if (!aArgs) { - aArgs = {}; - } - this._file = util.getArg(aArgs, 'file', null); - this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); - this._skipValidation = util.getArg(aArgs, 'skipValidation', false); - this._sources = new ArraySet(); - this._names = new ArraySet(); - this._mappings = new MappingList(); - this._sourcesContents = null; -} - -SourceMapGenerator.prototype._version = 3; - -/** - * Creates a new SourceMapGenerator based on a SourceMapConsumer - * - * @param aSourceMapConsumer The SourceMap. - */ -SourceMapGenerator.fromSourceMap = - function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { - var sourceRoot = aSourceMapConsumer.sourceRoot; - var generator = new SourceMapGenerator({ - file: aSourceMapConsumer.file, - sourceRoot: sourceRoot - }); - aSourceMapConsumer.eachMapping(function (mapping) { - var newMapping = { - generated: { - line: mapping.generatedLine, - column: mapping.generatedColumn - } - }; - - if (mapping.source != null) { - newMapping.source = mapping.source; - if (sourceRoot != null) { - newMapping.source = util.relative(sourceRoot, newMapping.source); - } - - newMapping.original = { - line: mapping.originalLine, - column: mapping.originalColumn - }; - - if (mapping.name != null) { - newMapping.name = mapping.name; - } - } - - generator.addMapping(newMapping); - }); - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - generator.setSourceContent(sourceFile, content); - } - }); - return generator; - }; - -/** - * Add a single mapping from original source line and column to the generated - * source's line and column for this source map being created. The mapping - * object should have the following properties: - * - * - generated: An object with the generated line and column positions. - * - original: An object with the original line and column positions. - * - source: The original source file (relative to the sourceRoot). - * - name: An optional original token name for this mapping. - */ -SourceMapGenerator.prototype.addMapping = - function SourceMapGenerator_addMapping(aArgs) { - var generated = util.getArg(aArgs, 'generated'); - var original = util.getArg(aArgs, 'original', null); - var source = util.getArg(aArgs, 'source', null); - var name = util.getArg(aArgs, 'name', null); - - if (!this._skipValidation) { - this._validateMapping(generated, original, source, name); - } - - if (source != null) { - source = String(source); - if (!this._sources.has(source)) { - this._sources.add(source); - } - } - - if (name != null) { - name = String(name); - if (!this._names.has(name)) { - this._names.add(name); - } - } - - this._mappings.add({ - generatedLine: generated.line, - generatedColumn: generated.column, - originalLine: original != null && original.line, - originalColumn: original != null && original.column, - source: source, - name: name - }); - }; - -/** - * Set the source content for a source file. - */ -SourceMapGenerator.prototype.setSourceContent = - function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { - var source = aSourceFile; - if (this._sourceRoot != null) { - source = util.relative(this._sourceRoot, source); - } - - if (aSourceContent != null) { - // Add the source content to the _sourcesContents map. - // Create a new _sourcesContents map if the property is null. - if (!this._sourcesContents) { - this._sourcesContents = Object.create(null); - } - this._sourcesContents[util.toSetString(source)] = aSourceContent; - } else if (this._sourcesContents) { - // Remove the source file from the _sourcesContents map. - // If the _sourcesContents map is empty, set the property to null. - delete this._sourcesContents[util.toSetString(source)]; - if (Object.keys(this._sourcesContents).length === 0) { - this._sourcesContents = null; - } - } - }; - -/** - * Applies the mappings of a sub-source-map for a specific source file to the - * source map being generated. Each mapping to the supplied source file is - * rewritten using the supplied source map. Note: The resolution for the - * resulting mappings is the minimium of this map and the supplied map. - * - * @param aSourceMapConsumer The source map to be applied. - * @param aSourceFile Optional. The filename of the source file. - * If omitted, SourceMapConsumer's file property will be used. - * @param aSourceMapPath Optional. The dirname of the path to the source map - * to be applied. If relative, it is relative to the SourceMapConsumer. - * This parameter is needed when the two source maps aren't in the same - * directory, and the source map to be applied contains relative source - * paths. If so, those relative source paths need to be rewritten - * relative to the SourceMapGenerator. - */ -SourceMapGenerator.prototype.applySourceMap = - function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { - var sourceFile = aSourceFile; - // If aSourceFile is omitted, we will use the file property of the SourceMap - if (aSourceFile == null) { - if (aSourceMapConsumer.file == null) { - throw new Error( - 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + - 'or the source map\'s "file" property. Both were omitted.' - ); - } - sourceFile = aSourceMapConsumer.file; - } - var sourceRoot = this._sourceRoot; - // Make "sourceFile" relative if an absolute Url is passed. - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - // Applying the SourceMap can add and remove items from the sources and - // the names array. - var newSources = new ArraySet(); - var newNames = new ArraySet(); - - // Find mappings for the "sourceFile" - this._mappings.unsortedForEach(function (mapping) { - if (mapping.source === sourceFile && mapping.originalLine != null) { - // Check if it can be mapped by the source map, then update the mapping. - var original = aSourceMapConsumer.originalPositionFor({ - line: mapping.originalLine, - column: mapping.originalColumn - }); - if (original.source != null) { - // Copy mapping - mapping.source = original.source; - if (aSourceMapPath != null) { - mapping.source = util.join(aSourceMapPath, mapping.source) - } - if (sourceRoot != null) { - mapping.source = util.relative(sourceRoot, mapping.source); - } - mapping.originalLine = original.line; - mapping.originalColumn = original.column; - if (original.name != null) { - mapping.name = original.name; - } - } - } - - var source = mapping.source; - if (source != null && !newSources.has(source)) { - newSources.add(source); - } - - var name = mapping.name; - if (name != null && !newNames.has(name)) { - newNames.add(name); - } - - }, this); - this._sources = newSources; - this._names = newNames; - - // Copy sourcesContents of applied map. - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aSourceMapPath != null) { - sourceFile = util.join(aSourceMapPath, sourceFile); - } - if (sourceRoot != null) { - sourceFile = util.relative(sourceRoot, sourceFile); - } - this.setSourceContent(sourceFile, content); - } - }, this); - }; - -/** - * A mapping can have one of the three levels of data: - * - * 1. Just the generated position. - * 2. The Generated position, original position, and original source. - * 3. Generated and original position, original source, as well as a name - * token. - * - * To maintain consistency, we validate that any new mapping being added falls - * in to one of these categories. - */ -SourceMapGenerator.prototype._validateMapping = - function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, - aName) { - // When aOriginal is truthy but has empty values for .line and .column, - // it is most likely a programmer error. In this case we throw a very - // specific error message to try to guide them the right way. - // For example: https://github.com/Polymer/polymer-bundler/pull/519 - if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { - throw new Error( - 'original.line and original.column are not numbers -- you probably meant to omit ' + - 'the original mapping entirely and only map the generated position. If so, pass ' + - 'null for the original mapping instead of an object with empty or null values.' - ); - } - - if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aGenerated.line > 0 && aGenerated.column >= 0 - && !aOriginal && !aSource && !aName) { - // Case 1. - return; - } - else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated - && aOriginal && 'line' in aOriginal && 'column' in aOriginal - && aGenerated.line > 0 && aGenerated.column >= 0 - && aOriginal.line > 0 && aOriginal.column >= 0 - && aSource) { - // Cases 2 and 3. - return; - } - else { - throw new Error('Invalid mapping: ' + JSON.stringify({ - generated: aGenerated, - source: aSource, - original: aOriginal, - name: aName - })); - } - }; - -/** - * Serialize the accumulated mappings in to the stream of base 64 VLQs - * specified by the source map format. - */ -SourceMapGenerator.prototype._serializeMappings = - function SourceMapGenerator_serializeMappings() { - var previousGeneratedColumn = 0; - var previousGeneratedLine = 1; - var previousOriginalColumn = 0; - var previousOriginalLine = 0; - var previousName = 0; - var previousSource = 0; - var result = ''; - var next; - var mapping; - var nameIdx; - var sourceIdx; - - var mappings = this._mappings.toArray(); - for (var i = 0, len = mappings.length; i < len; i++) { - mapping = mappings[i]; - next = '' - - if (mapping.generatedLine !== previousGeneratedLine) { - previousGeneratedColumn = 0; - while (mapping.generatedLine !== previousGeneratedLine) { - next += ';'; - previousGeneratedLine++; - } - } - else { - if (i > 0) { - if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { - continue; - } - next += ','; - } - } - - next += base64VLQ.encode(mapping.generatedColumn - - previousGeneratedColumn); - previousGeneratedColumn = mapping.generatedColumn; - - if (mapping.source != null) { - sourceIdx = this._sources.indexOf(mapping.source); - next += base64VLQ.encode(sourceIdx - previousSource); - previousSource = sourceIdx; - - // lines are stored 0-based in SourceMap spec version 3 - next += base64VLQ.encode(mapping.originalLine - 1 - - previousOriginalLine); - previousOriginalLine = mapping.originalLine - 1; - - next += base64VLQ.encode(mapping.originalColumn - - previousOriginalColumn); - previousOriginalColumn = mapping.originalColumn; - - if (mapping.name != null) { - nameIdx = this._names.indexOf(mapping.name); - next += base64VLQ.encode(nameIdx - previousName); - previousName = nameIdx; - } - } - - result += next; - } - - return result; - }; - -SourceMapGenerator.prototype._generateSourcesContent = - function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { - return aSources.map(function (source) { - if (!this._sourcesContents) { - return null; - } - if (aSourceRoot != null) { - source = util.relative(aSourceRoot, source); - } - var key = util.toSetString(source); - return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) - ? this._sourcesContents[key] - : null; - }, this); - }; - -/** - * Externalize the source map. - */ -SourceMapGenerator.prototype.toJSON = - function SourceMapGenerator_toJSON() { - var map = { - version: this._version, - sources: this._sources.toArray(), - names: this._names.toArray(), - mappings: this._serializeMappings() - }; - if (this._file != null) { - map.file = this._file; - } - if (this._sourceRoot != null) { - map.sourceRoot = this._sourceRoot; - } - if (this._sourcesContents) { - map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); - } - - return map; - }; - -/** - * Render the source map being generated to a string. - */ -SourceMapGenerator.prototype.toString = - function SourceMapGenerator_toString() { - return JSON.stringify(this.toJSON()); - }; - -exports.SourceMapGenerator = SourceMapGenerator; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/source-node.js": -/***/ (function(module, exports, __webpack_require__) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -var SourceMapGenerator = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js").SourceMapGenerator; -var util = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/util.js"); - -// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other -// operating systems these days (capturing the result). -var REGEX_NEWLINE = /(\r?\n)/; - -// Newline character code for charCodeAt() comparisons -var NEWLINE_CODE = 10; - -// Private symbol for identifying `SourceNode`s when multiple versions of -// the source-map library are loaded. This MUST NOT CHANGE across -// versions! -var isSourceNode = "$$$isSourceNode$$$"; - -/** - * SourceNodes provide a way to abstract over interpolating/concatenating - * snippets of generated JavaScript source code while maintaining the line and - * column information associated with the original source code. - * - * @param aLine The original line number. - * @param aColumn The original column number. - * @param aSource The original source's filename. - * @param aChunks Optional. An array of strings which are snippets of - * generated JS, or other SourceNodes. - * @param aName The original identifier. - */ -function SourceNode(aLine, aColumn, aSource, aChunks, aName) { - this.children = []; - this.sourceContents = {}; - this.line = aLine == null ? null : aLine; - this.column = aColumn == null ? null : aColumn; - this.source = aSource == null ? null : aSource; - this.name = aName == null ? null : aName; - this[isSourceNode] = true; - if (aChunks != null) this.add(aChunks); -} - -/** - * Creates a SourceNode from generated code and a SourceMapConsumer. - * - * @param aGeneratedCode The generated code - * @param aSourceMapConsumer The SourceMap for the generated code - * @param aRelativePath Optional. The path that relative sources in the - * SourceMapConsumer should be relative to. - */ -SourceNode.fromStringWithSourceMap = - function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { - // The SourceNode we want to fill with the generated code - // and the SourceMap - var node = new SourceNode(); - - // All even indices of this array are one line of the generated code, - // while all odd indices are the newlines between two adjacent lines - // (since `REGEX_NEWLINE` captures its match). - // Processed fragments are accessed by calling `shiftNextLine`. - var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); - var remainingLinesIndex = 0; - var shiftNextLine = function() { - var lineContents = getNextLine(); - // The last line of a file might not have a newline. - var newLine = getNextLine() || ""; - return lineContents + newLine; - - function getNextLine() { - return remainingLinesIndex < remainingLines.length ? - remainingLines[remainingLinesIndex++] : undefined; - } - }; - - // We need to remember the position of "remainingLines" - var lastGeneratedLine = 1, lastGeneratedColumn = 0; - - // The generate SourceNodes we need a code range. - // To extract it current and last mapping is used. - // Here we store the last mapping. - var lastMapping = null; - - aSourceMapConsumer.eachMapping(function (mapping) { - if (lastMapping !== null) { - // We add the code from "lastMapping" to "mapping": - // First check if there is a new line in between. - if (lastGeneratedLine < mapping.generatedLine) { - // Associate first line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - lastGeneratedLine++; - lastGeneratedColumn = 0; - // The remaining code is added without mapping - } else { - // There is no new line in between. - // Associate the code between "lastGeneratedColumn" and - // "mapping.generatedColumn" with "lastMapping" - var nextLine = remainingLines[remainingLinesIndex]; - var code = nextLine.substr(0, mapping.generatedColumn - - lastGeneratedColumn); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - - lastGeneratedColumn); - lastGeneratedColumn = mapping.generatedColumn; - addMappingWithCode(lastMapping, code); - // No more remaining code, continue - lastMapping = mapping; - return; - } - } - // We add the generated code until the first mapping - // to the SourceNode without any mapping. - // Each line is added as separate string. - while (lastGeneratedLine < mapping.generatedLine) { - node.add(shiftNextLine()); - lastGeneratedLine++; - } - if (lastGeneratedColumn < mapping.generatedColumn) { - var nextLine = remainingLines[remainingLinesIndex]; - node.add(nextLine.substr(0, mapping.generatedColumn)); - remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); - lastGeneratedColumn = mapping.generatedColumn; - } - lastMapping = mapping; - }, this); - // We have processed all mappings. - if (remainingLinesIndex < remainingLines.length) { - if (lastMapping) { - // Associate the remaining code in the current line with "lastMapping" - addMappingWithCode(lastMapping, shiftNextLine()); - } - // and add the remaining lines without any mapping - node.add(remainingLines.splice(remainingLinesIndex).join("")); - } - - // Copy sourcesContent into SourceNode - aSourceMapConsumer.sources.forEach(function (sourceFile) { - var content = aSourceMapConsumer.sourceContentFor(sourceFile); - if (content != null) { - if (aRelativePath != null) { - sourceFile = util.join(aRelativePath, sourceFile); - } - node.setSourceContent(sourceFile, content); - } - }); - - return node; - - function addMappingWithCode(mapping, code) { - if (mapping === null || mapping.source === undefined) { - node.add(code); - } else { - var source = aRelativePath - ? util.join(aRelativePath, mapping.source) - : mapping.source; - node.add(new SourceNode(mapping.originalLine, - mapping.originalColumn, - source, - code, - mapping.name)); - } - } - }; - -/** - * Add a chunk of generated JS to this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.add = function SourceNode_add(aChunk) { - if (Array.isArray(aChunk)) { - aChunk.forEach(function (chunk) { - this.add(chunk); - }, this); - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - if (aChunk) { - this.children.push(aChunk); - } - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Add a chunk of generated JS to the beginning of this source node. - * - * @param aChunk A string snippet of generated JS code, another instance of - * SourceNode, or an array where each member is one of those things. - */ -SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { - if (Array.isArray(aChunk)) { - for (var i = aChunk.length-1; i >= 0; i--) { - this.prepend(aChunk[i]); - } - } - else if (aChunk[isSourceNode] || typeof aChunk === "string") { - this.children.unshift(aChunk); - } - else { - throw new TypeError( - "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk - ); - } - return this; -}; - -/** - * Walk over the tree of JS snippets in this node and its children. The - * walking function is called once for each snippet of JS and is passed that - * snippet and the its original associated source's line/column location. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walk = function SourceNode_walk(aFn) { - var chunk; - for (var i = 0, len = this.children.length; i < len; i++) { - chunk = this.children[i]; - if (chunk[isSourceNode]) { - chunk.walk(aFn); - } - else { - if (chunk !== '') { - aFn(chunk, { source: this.source, - line: this.line, - column: this.column, - name: this.name }); - } - } - } -}; - -/** - * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between - * each of `this.children`. - * - * @param aSep The separator. - */ -SourceNode.prototype.join = function SourceNode_join(aSep) { - var newChildren; - var i; - var len = this.children.length; - if (len > 0) { - newChildren = []; - for (i = 0; i < len-1; i++) { - newChildren.push(this.children[i]); - newChildren.push(aSep); - } - newChildren.push(this.children[i]); - this.children = newChildren; - } - return this; -}; - -/** - * Call String.prototype.replace on the very right-most source snippet. Useful - * for trimming whitespace from the end of a source node, etc. - * - * @param aPattern The pattern to replace. - * @param aReplacement The thing to replace the pattern with. - */ -SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { - var lastChild = this.children[this.children.length - 1]; - if (lastChild[isSourceNode]) { - lastChild.replaceRight(aPattern, aReplacement); - } - else if (typeof lastChild === 'string') { - this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); - } - else { - this.children.push(''.replace(aPattern, aReplacement)); - } - return this; -}; - -/** - * Set the source content for a source file. This will be added to the SourceMapGenerator - * in the sourcesContent field. - * - * @param aSourceFile The filename of the source file - * @param aSourceContent The content of the source file - */ -SourceNode.prototype.setSourceContent = - function SourceNode_setSourceContent(aSourceFile, aSourceContent) { - this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; - }; - -/** - * Walk over the tree of SourceNodes. The walking function is called for each - * source file content and is passed the filename and source content. - * - * @param aFn The traversal function. - */ -SourceNode.prototype.walkSourceContents = - function SourceNode_walkSourceContents(aFn) { - for (var i = 0, len = this.children.length; i < len; i++) { - if (this.children[i][isSourceNode]) { - this.children[i].walkSourceContents(aFn); - } - } - - var sources = Object.keys(this.sourceContents); - for (var i = 0, len = sources.length; i < len; i++) { - aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); - } - }; - -/** - * Return the string representation of this source node. Walks over the tree - * and concatenates all the various snippets together to one string. - */ -SourceNode.prototype.toString = function SourceNode_toString() { - var str = ""; - this.walk(function (chunk) { - str += chunk; - }); - return str; -}; - -/** - * Returns the string representation of this source node along with a source - * map. - */ -SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { - var generated = { - code: "", - line: 1, - column: 0 - }; - var map = new SourceMapGenerator(aArgs); - var sourceMappingActive = false; - var lastOriginalSource = null; - var lastOriginalLine = null; - var lastOriginalColumn = null; - var lastOriginalName = null; - this.walk(function (chunk, original) { - generated.code += chunk; - if (original.source !== null - && original.line !== null - && original.column !== null) { - if(lastOriginalSource !== original.source - || lastOriginalLine !== original.line - || lastOriginalColumn !== original.column - || lastOriginalName !== original.name) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - lastOriginalSource = original.source; - lastOriginalLine = original.line; - lastOriginalColumn = original.column; - lastOriginalName = original.name; - sourceMappingActive = true; - } else if (sourceMappingActive) { - map.addMapping({ - generated: { - line: generated.line, - column: generated.column - } - }); - lastOriginalSource = null; - sourceMappingActive = false; - } - for (var idx = 0, length = chunk.length; idx < length; idx++) { - if (chunk.charCodeAt(idx) === NEWLINE_CODE) { - generated.line++; - generated.column = 0; - // Mappings end at eol - if (idx + 1 === length) { - lastOriginalSource = null; - sourceMappingActive = false; - } else if (sourceMappingActive) { - map.addMapping({ - source: original.source, - original: { - line: original.line, - column: original.column - }, - generated: { - line: generated.line, - column: generated.column - }, - name: original.name - }); - } - } else { - generated.column++; - } - } - }); - this.walkSourceContents(function (sourceFile, sourceContent) { - map.setSourceContent(sourceFile, sourceContent); - }); - - return { code: generated.code, map: map }; -}; - -exports.SourceNode = SourceNode; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/lib/util.js": -/***/ (function(module, exports) { - -/* -*- Mode: js; js-indent-level: 2; -*- */ -/* - * Copyright 2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE or: - * http://opensource.org/licenses/BSD-3-Clause - */ - -/** - * This is a helper function for getting values from parameter/options - * objects. - * - * @param args The object we are extracting values from - * @param name The name of the property we are getting. - * @param defaultValue An optional value to return if the property is missing - * from the object. If this is not specified and the property is missing, an - * error will be thrown. - */ -function getArg(aArgs, aName, aDefaultValue) { - if (aName in aArgs) { - return aArgs[aName]; - } else if (arguments.length === 3) { - return aDefaultValue; - } else { - throw new Error('"' + aName + '" is a required argument.'); - } -} -exports.getArg = getArg; - -var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/; -var dataUrlRegexp = /^data:.+\,.+$/; - -function urlParse(aUrl) { - var match = aUrl.match(urlRegexp); - if (!match) { - return null; - } - return { - scheme: match[1], - auth: match[2], - host: match[3], - port: match[4], - path: match[5] - }; -} -exports.urlParse = urlParse; - -function urlGenerate(aParsedUrl) { - var url = ''; - if (aParsedUrl.scheme) { - url += aParsedUrl.scheme + ':'; - } - url += '//'; - if (aParsedUrl.auth) { - url += aParsedUrl.auth + '@'; - } - if (aParsedUrl.host) { - url += aParsedUrl.host; - } - if (aParsedUrl.port) { - url += ":" + aParsedUrl.port - } - if (aParsedUrl.path) { - url += aParsedUrl.path; - } - return url; -} -exports.urlGenerate = urlGenerate; - -/** - * Normalizes a path, or the path portion of a URL: - * - * - Replaces consecutive slashes with one slash. - * - Removes unnecessary '.' parts. - * - Removes unnecessary '/..' parts. - * - * Based on code in the Node.js 'path' core module. - * - * @param aPath The path or url to normalize. - */ -function normalize(aPath) { - var path = aPath; - var url = urlParse(aPath); - if (url) { - if (!url.path) { - return aPath; - } - path = url.path; - } - var isAbsolute = exports.isAbsolute(path); - - var parts = path.split(/\/+/); - for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { - part = parts[i]; - if (part === '.') { - parts.splice(i, 1); - } else if (part === '..') { - up++; - } else if (up > 0) { - if (part === '') { - // The first part is blank if the path is absolute. Trying to go - // above the root is a no-op. Therefore we can remove all '..' parts - // directly after the root. - parts.splice(i + 1, up); - up = 0; - } else { - parts.splice(i, 2); - up--; - } - } - } - path = parts.join('/'); - - if (path === '') { - path = isAbsolute ? '/' : '.'; - } - - if (url) { - url.path = path; - return urlGenerate(url); - } - return path; -} -exports.normalize = normalize; - -/** - * Joins two paths/URLs. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be joined with the root. - * - * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a - * scheme-relative URL: Then the scheme of aRoot, if any, is prepended - * first. - * - Otherwise aPath is a path. If aRoot is a URL, then its path portion - * is updated with the result and aRoot is returned. Otherwise the result - * is returned. - * - If aPath is absolute, the result is aPath. - * - Otherwise the two paths are joined with a slash. - * - Joining for example 'http://' and 'www.example.com' is also supported. - */ -function join(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - if (aPath === "") { - aPath = "."; - } - var aPathUrl = urlParse(aPath); - var aRootUrl = urlParse(aRoot); - if (aRootUrl) { - aRoot = aRootUrl.path || '/'; - } - - // `join(foo, '//www.example.org')` - if (aPathUrl && !aPathUrl.scheme) { - if (aRootUrl) { - aPathUrl.scheme = aRootUrl.scheme; - } - return urlGenerate(aPathUrl); - } - - if (aPathUrl || aPath.match(dataUrlRegexp)) { - return aPath; - } - - // `join('http://', 'www.example.com')` - if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { - aRootUrl.host = aPath; - return urlGenerate(aRootUrl); - } - - var joined = aPath.charAt(0) === '/' - ? aPath - : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); - - if (aRootUrl) { - aRootUrl.path = joined; - return urlGenerate(aRootUrl); - } - return joined; -} -exports.join = join; - -exports.isAbsolute = function (aPath) { - return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp); -}; - -/** - * Make a path relative to a URL or another path. - * - * @param aRoot The root path or URL. - * @param aPath The path or URL to be made relative to aRoot. - */ -function relative(aRoot, aPath) { - if (aRoot === "") { - aRoot = "."; - } - - aRoot = aRoot.replace(/\/$/, ''); - - // It is possible for the path to be above the root. In this case, simply - // checking whether the root is a prefix of the path won't work. Instead, we - // need to remove components from the root one by one, until either we find - // a prefix that fits, or we run out of components to remove. - var level = 0; - while (aPath.indexOf(aRoot + '/') !== 0) { - var index = aRoot.lastIndexOf("/"); - if (index < 0) { - return aPath; - } - - // If the only part of the root that is left is the scheme (i.e. http://, - // file:///, etc.), one or more slashes (/), or simply nothing at all, we - // have exhausted all components, so the path is not relative to the root. - aRoot = aRoot.slice(0, index); - if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { - return aPath; - } - - ++level; - } - - // Make sure we add a "../" for each component we removed from the root. - return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); -} -exports.relative = relative; - -var supportsNullProto = (function () { - var obj = Object.create(null); - return !('__proto__' in obj); -}()); - -function identity (s) { - return s; -} - -/** - * Because behavior goes wacky when you set `__proto__` on objects, we - * have to prefix all the strings in our set with an arbitrary character. - * - * See https://github.com/mozilla/source-map/pull/31 and - * https://github.com/mozilla/source-map/issues/30 - * - * @param String aStr - */ -function toSetString(aStr) { - if (isProtoString(aStr)) { - return '$' + aStr; - } - - return aStr; -} -exports.toSetString = supportsNullProto ? identity : toSetString; - -function fromSetString(aStr) { - if (isProtoString(aStr)) { - return aStr.slice(1); - } - - return aStr; -} -exports.fromSetString = supportsNullProto ? identity : fromSetString; - -function isProtoString(s) { - if (!s) { - return false; - } - - var length = s.length; - - if (length < 9 /* "__proto__".length */) { - return false; - } - - if (s.charCodeAt(length - 1) !== 95 /* '_' */ || - s.charCodeAt(length - 2) !== 95 /* '_' */ || - s.charCodeAt(length - 3) !== 111 /* 'o' */ || - s.charCodeAt(length - 4) !== 116 /* 't' */ || - s.charCodeAt(length - 5) !== 111 /* 'o' */ || - s.charCodeAt(length - 6) !== 114 /* 'r' */ || - s.charCodeAt(length - 7) !== 112 /* 'p' */ || - s.charCodeAt(length - 8) !== 95 /* '_' */ || - s.charCodeAt(length - 9) !== 95 /* '_' */) { - return false; - } - - for (var i = length - 10; i >= 0; i--) { - if (s.charCodeAt(i) !== 36 /* '$' */) { - return false; - } - } - - return true; -} - -/** - * Comparator between two mappings where the original positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same original source/line/column, but different generated - * line and column the same. Useful when searching for a mapping with a - * stubbed out mapping. - */ -function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { - var cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0 || onlyCompareOriginal) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; -} -exports.compareByOriginalPositions = compareByOriginalPositions; - -/** - * Comparator between two mappings with deflated source and name indices where - * the generated positions are compared. - * - * Optionally pass in `true` as `onlyCompareGenerated` to consider two - * mappings with the same generated line and column, but different - * source/name/original line and column the same. Useful when searching for a - * mapping with a stubbed out mapping. - */ -function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0 || onlyCompareGenerated) { - return cmp; - } - - cmp = mappingA.source - mappingB.source; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return mappingA.name - mappingB.name; -} -exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; - -function strcmp(aStr1, aStr2) { - if (aStr1 === aStr2) { - return 0; - } - - if (aStr1 > aStr2) { - return 1; - } - - return -1; -} - -/** - * Comparator between two mappings with inflated source and name strings where - * the generated positions are compared. - */ -function compareByGeneratedPositionsInflated(mappingA, mappingB) { - var cmp = mappingA.generatedLine - mappingB.generatedLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.generatedColumn - mappingB.generatedColumn; - if (cmp !== 0) { - return cmp; - } - - cmp = strcmp(mappingA.source, mappingB.source); - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalLine - mappingB.originalLine; - if (cmp !== 0) { - return cmp; - } - - cmp = mappingA.originalColumn - mappingB.originalColumn; - if (cmp !== 0) { - return cmp; - } - - return strcmp(mappingA.name, mappingB.name); -} -exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; - - -/***/ }), - -/***/ "../../node_modules/snapdragon/node_modules/source-map/source-map.js": -/***/ (function(module, exports, __webpack_require__) { - -/* - * Copyright 2009-2011 Mozilla Foundation and contributors - * Licensed under the New BSD license. See LICENSE.txt or: - * http://opensource.org/licenses/BSD-3-Clause - */ -exports.SourceMapGenerator = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/source-map-generator.js").SourceMapGenerator; -exports.SourceMapConsumer = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/source-map-consumer.js").SourceMapConsumer; -exports.SourceNode = __webpack_require__("../../node_modules/snapdragon/node_modules/source-map/lib/source-node.js").SourceNode; - - -/***/ }), - -/***/ "../../node_modules/sort-keys/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const isPlainObj = __webpack_require__("../../node_modules/sort-keys/node_modules/is-plain-obj/index.js"); - -module.exports = (obj, opts) => { - if (!isPlainObj(obj)) { - throw new TypeError('Expected a plain object'); - } - - opts = opts || {}; - - // DEPRECATED - if (typeof opts === 'function') { - throw new TypeError('Specify the compare function as an option instead'); - } - - const deep = opts.deep; - const seenInput = []; - const seenOutput = []; - - const sortKeys = x => { - const seenIndex = seenInput.indexOf(x); - - if (seenIndex !== -1) { - return seenOutput[seenIndex]; - } - - const ret = {}; - const keys = Object.keys(x).sort(opts.compare); - - seenInput.push(x); - seenOutput.push(ret); - - for (let i = 0; i < keys.length; i++) { - const key = keys[i]; - const val = x[key]; - - if (deep && Array.isArray(val)) { - const retArr = []; - - for (let j = 0; j < val.length; j++) { - retArr[j] = isPlainObj(val[j]) ? sortKeys(val[j]) : val[j]; - } - - ret[key] = retArr; - continue; - } - - ret[key] = deep && isPlainObj(val) ? sortKeys(val) : val; - } - - return ret; - }; - - return sortKeys(obj); -}; - - -/***/ }), - -/***/ "../../node_modules/sort-keys/node_modules/is-plain-obj/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -var toString = Object.prototype.toString; - -module.exports = function (x) { - var prototype; - return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({})); -}; - - -/***/ }), - -/***/ "../../node_modules/sort-object-keys/index.js": -/***/ (function(module, exports) { - -module.exports = function sortObjectByKeyNameList(object, sortWith) { - var keys; - var sortFn; - - if (typeof sortWith === 'function') { - sortFn = sortWith; - } else { - keys = sortWith; - } - - var objectKeys = Object.keys(object); - return (keys || []).concat(objectKeys.sort(sortFn)).reduce(function(total, key) { - if (objectKeys.indexOf(key) !== -1) { - total[key] = object[key]; - } - return total; - }, Object.create(null)); -} - - -/***/ }), - -/***/ "../../node_modules/sort-package-json/index.js": -/***/ (function(module, exports, __webpack_require__) { - -const sortObjectKeys = __webpack_require__("../../node_modules/sort-object-keys/index.js") -const detectIndent = __webpack_require__("../../node_modules/detect-indent/index.js") -const detectNewline = __webpack_require__("../../node_modules/detect-newline/index.js").graceful -const gitHooks = __webpack_require__("../../node_modules/git-hooks-list/index.json") -const isPlainObject = __webpack_require__("../../node_modules/is-plain-obj/index.js") - -const hasOwnProperty = (object, property) => - Object.prototype.hasOwnProperty.call(object, property) -const pipe = (fns) => (x, ...args) => - fns.reduce((result, fn) => fn(result, ...args), x) -const onArray = (fn) => (x) => (Array.isArray(x) ? fn(x) : x) -const onStringArray = (fn) => (x) => - Array.isArray(x) && x.every((item) => typeof item === 'string') ? fn(x) : x -const uniq = onStringArray((xs) => xs.filter((x, i) => i === xs.indexOf(x))) -const sortArray = onStringArray((array) => [...array].sort()) -const uniqAndSortArray = pipe([uniq, sortArray]) -const onObject = (fn) => (x, ...args) => (isPlainObject(x) ? fn(x, ...args) : x) -const sortObjectBy = (comparator, deep) => { - const over = onObject((object) => { - object = sortObjectKeys(object, comparator) - if (deep) { - for (const [key, value] of Object.entries(object)) { - object[key] = over(value) - } - } - return object - }) - - return over -} -const sortObject = sortObjectBy() -const sortURLObject = sortObjectBy(['type', 'url']) -const sortPeopleObject = sortObjectBy(['name', 'email', 'url']) -const sortDirectories = sortObjectBy([ - 'lib', - 'bin', - 'man', - 'doc', - 'example', - 'test', -]) -const overProperty = (property, over) => (object, ...args) => - hasOwnProperty(object, property) - ? Object.assign(object, { [property]: over(object[property], ...args) }) - : object -const sortGitHooks = sortObjectBy(gitHooks) - -// https://github.com/eslint/eslint/blob/acc0e47572a9390292b4e313b4a4bf360d236358/conf/config-schema.js -const eslintBaseConfigProperties = [ - // `files` and `excludedFiles` are only on `overrides[]` - // for easier sort `overrides[]`, - // add them to here, so we don't need sort `overrides[]` twice - 'files', - 'excludedFiles', - // baseConfig - 'env', - 'parser', - 'parserOptions', - 'settings', - 'plugins', - 'extends', - 'rules', - 'overrides', - 'globals', - 'processor', - 'noInlineConfig', - 'reportUnusedDisableDirectives', -] -const sortEslintConfig = onObject( - pipe([ - sortObjectBy(eslintBaseConfigProperties), - overProperty('env', sortObject), - overProperty('globals', sortObject), - overProperty( - 'overrides', - onArray((overrides) => overrides.map(sortEslintConfig)), - ), - overProperty('parserOptions', sortObject), - overProperty( - 'rules', - sortObjectBy( - (rule1, rule2) => - rule1.split('/').length - rule2.split('/').length || - rule1.localeCompare(rule2), - ), - ), - overProperty('settings', sortObject), - ]), -) -const sortVSCodeBadgeObject = sortObjectBy(['description', 'url', 'href']) - -const sortPrettierConfig = onObject( - pipe([ - // sort keys alphabetically, but put `overrides` at bottom - (config) => - sortObjectKeys(config, [ - ...Object.keys(config) - .filter((key) => key !== 'overrides') - .sort(), - 'overrides', - ]), - // if `config.overrides` exists - overProperty( - 'overrides', - // and `config.overrides` is an array - onArray((overrides) => - overrides.map( - pipe([ - // sort `config.overrides[]` alphabetically - sortObject, - // sort `config.overrides[].options` alphabetically - overProperty('options', sortObject), - ]), - ), - ), - ), - ]), -) - -// See https://docs.npmjs.com/misc/scripts -const defaultNpmScripts = new Set([ - 'install', - 'pack', - 'prepare', - 'publish', - 'restart', - 'shrinkwrap', - 'start', - 'stop', - 'test', - 'uninstall', - 'version', -]) - -const hasDevDependency = (dependency, packageJson) => { - return ( - 'devDependencies' in packageJson && - !!packageJson.devDependencies[dependency] - ) -} - -const sortScripts = onObject((scripts, packageJson) => { - const names = Object.keys(scripts) - const prefixable = new Set() - - const keys = names.map((name) => { - const omitted = name.replace(/^(?:pre|post)/, '') - if (defaultNpmScripts.has(omitted) || names.includes(omitted)) { - prefixable.add(omitted) - return omitted - } - return name - }) - - if (!hasDevDependency('npm-run-all', packageJson)) { - keys.sort() - } - - const order = keys.reduce( - (order, key) => - order.concat( - prefixable.has(key) ? [`pre${key}`, key, `post${key}`] : [key], - ), - [], - ) - - return sortObjectKeys(scripts, order) -}) - -// fields marked `vscode` are for `Visual Studio Code extension manifest` only -// https://code.visualstudio.com/api/references/extension-manifest -// Supported fields: -// publisher, displayName, categories, galleryBanner, preview, contributes, -// activationEvents, badges, markdown, qna, extensionPack, -// extensionDependencies, icon - -// field.key{string}: field name -// field.over{function}: sort field subKey -const fields = [ - { key: '$schema' }, - { key: 'name' }, - /* vscode */ { key: 'displayName' }, - { key: 'version' }, - { key: 'private' }, - { key: 'description' }, - /* vscode */ { key: 'categories', over: uniq }, - { key: 'keywords', over: uniq }, - { key: 'homepage' }, - { key: 'bugs', over: sortObjectBy(['url', 'email']) }, - { key: 'repository', over: sortURLObject }, - { key: 'funding', over: sortURLObject }, - { key: 'license', over: sortURLObject }, - /* vscode */ { key: 'qna' }, - { key: 'author', over: sortPeopleObject }, - { - key: 'maintainers', - over: onArray((maintainers) => maintainers.map(sortPeopleObject)), - }, - { - key: 'contributors', - over: onArray((contributors) => contributors.map(sortPeopleObject)), - }, - /* vscode */ { key: 'publisher' }, - { key: 'sideEffects' }, - { key: 'type' }, - { key: 'imports' }, - { key: 'exports' }, - { key: 'main' }, - { key: 'umd:main' }, - { key: 'jsdelivr' }, - { key: 'unpkg' }, - { key: 'module' }, - { key: 'source' }, - { key: 'jsnext:main' }, - { key: 'browser' }, - { key: 'types' }, - { key: 'typesVersions' }, - { key: 'typings' }, - { key: 'style' }, - { key: 'example' }, - { key: 'examplestyle' }, - { key: 'assets' }, - { key: 'bin', over: sortObject }, - { key: 'man' }, - { key: 'directories', over: sortDirectories }, - { key: 'files', over: uniq }, - { key: 'workspaces' }, - // node-pre-gyp https://www.npmjs.com/package/node-pre-gyp#1-add-new-entries-to-your-packagejson - { - key: 'binary', - over: sortObjectBy([ - 'module_name', - 'module_path', - 'remote_path', - 'package_name', - 'host', - ]), - }, - { key: 'scripts', over: sortScripts }, - { key: 'betterScripts', over: sortScripts }, - /* vscode */ { key: 'contributes', over: sortObject }, - /* vscode */ { key: 'activationEvents', over: uniq }, - { key: 'husky', over: overProperty('hooks', sortGitHooks) }, - { key: 'simple-git-hooks', over: sortGitHooks }, - { key: 'pre-commit' }, - { key: 'commitlint', over: sortObject }, - { key: 'lint-staged' }, - { key: 'config', over: sortObject }, - { key: 'nodemonConfig', over: sortObject }, - { key: 'browserify', over: sortObject }, - { key: 'babel', over: sortObject }, - { key: 'browserslist' }, - { key: 'xo', over: sortObject }, - { key: 'prettier', over: sortPrettierConfig }, - { key: 'eslintConfig', over: sortEslintConfig }, - { key: 'eslintIgnore' }, - { key: 'npmpkgjsonlint', over: sortObject }, - { key: 'npmPackageJsonLintConfig', over: sortObject }, - { key: 'npmpackagejsonlint', over: sortObject }, - { key: 'release', over: sortObject }, - { key: 'remarkConfig', over: sortObject }, - { key: 'stylelint' }, - { key: 'ava', over: sortObject }, - { key: 'jest', over: sortObject }, - { key: 'mocha', over: sortObject }, - { key: 'nyc', over: sortObject }, - { key: 'c8', over: sortObject }, - { key: 'tap', over: sortObject }, - { key: 'resolutions', over: sortObject }, - { key: 'dependencies', over: sortObject }, - { key: 'devDependencies', over: sortObject }, - { key: 'dependenciesMeta', over: sortObjectBy(undefined, true) }, - { key: 'peerDependencies', over: sortObject }, - // TODO: only sort depth = 2 - { key: 'peerDependenciesMeta', over: sortObjectBy(undefined, true) }, - { key: 'optionalDependencies', over: sortObject }, - { key: 'bundledDependencies', over: uniqAndSortArray }, - { key: 'bundleDependencies', over: uniqAndSortArray }, - /* vscode */ { key: 'extensionPack', over: uniqAndSortArray }, - /* vscode */ { key: 'extensionDependencies', over: uniqAndSortArray }, - { key: 'flat' }, - { key: 'engines', over: sortObject }, - { key: 'engineStrict', over: sortObject }, - { key: 'languageName' }, - { key: 'os' }, - { key: 'cpu' }, - { key: 'preferGlobal', over: sortObject }, - { key: 'publishConfig', over: sortObject }, - /* vscode */ { key: 'icon' }, - /* vscode */ { - key: 'badges', - over: onArray((badge) => badge.map(sortVSCodeBadgeObject)), - }, - /* vscode */ { key: 'galleryBanner', over: sortObject }, - /* vscode */ { key: 'preview' }, - /* vscode */ { key: 'markdown' }, -] - -const defaultSortOrder = fields.map(({ key }) => key) -const overFields = pipe( - fields.reduce((fns, { key, over }) => { - if (over) { - fns.push(overProperty(key, over)) - } - return fns - }, []), -) - -function editStringJSON(json, over) { - if (typeof json === 'string') { - const { indent } = detectIndent(json) - const endCharacters = json.slice(-1) === '\n' ? '\n' : '' - const newline = detectNewline(json) - json = JSON.parse(json) - - let result = JSON.stringify(over(json), null, indent) + endCharacters - if (newline === '\r\n') { - result = result.replace(/\n/g, newline) - } - return result - } - - return over(json) -} - -const isPrivateKey = (key) => key[0] === '_' -const partition = (array, predicate) => - array.reduce( - (result, value) => { - result[predicate(value) ? 0 : 1].push(value) - return result - }, - [[], []], - ) -function sortPackageJson(jsonIsh, options = {}) { - return editStringJSON( - jsonIsh, - onObject((json) => { - let sortOrder = options.sortOrder ? options.sortOrder : defaultSortOrder - - if (Array.isArray(sortOrder)) { - const keys = Object.keys(json) - const [privateKeys, publicKeys] = partition(keys, isPrivateKey) - sortOrder = [ - ...sortOrder, - ...defaultSortOrder, - ...publicKeys.sort(), - ...privateKeys.sort(), - ] - } - - return overFields(sortObjectKeys(json, sortOrder), json) - }), - ) -} - -module.exports = sortPackageJson -module.exports.sortPackageJson = sortPackageJson -module.exports.sortOrder = defaultSortOrder -module.exports.default = sortPackageJson - - -/***/ }), - -/***/ "../../node_modules/source-map-resolve/lib/decode-uri-component.js": -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var decodeUriComponent = __webpack_require__("../../node_modules/decode-uri-component/index.js") - -function customDecodeUriComponent(string) { - // `decodeUriComponent` turns `+` into ` `, but that's not wanted. - return decodeUriComponent(string.replace(/\+/g, "%2B")) -} - -module.exports = customDecodeUriComponent - - -/***/ }), - -/***/ "../../node_modules/source-map-resolve/lib/resolve-url.js": -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var url = __webpack_require__("url") - -function resolveUrl(/* ...urls */) { - return Array.prototype.reduce.call(arguments, function(resolved, nextUrl) { - return url.resolve(resolved, nextUrl) - }) -} - -module.exports = resolveUrl - - -/***/ }), - -/***/ "../../node_modules/source-map-resolve/lib/source-map-resolve-node.js": -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2014, 2015, 2016, 2017 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var sourceMappingURL = __webpack_require__("../../node_modules/source-map-url/source-map-url.js") -var resolveUrl = __webpack_require__("../../node_modules/source-map-resolve/lib/resolve-url.js") -var decodeUriComponent = __webpack_require__("../../node_modules/source-map-resolve/lib/decode-uri-component.js") -var urix = __webpack_require__("../../node_modules/urix/index.js") -var atob = __webpack_require__("../../node_modules/atob/node-atob.js") - - - -function callbackAsync(callback, error, result) { - setImmediate(function() { callback(error, result) }) -} - -function parseMapToJSON(string, data) { - try { - return JSON.parse(string.replace(/^\)\]\}'/, "")) - } catch (error) { - error.sourceMapData = data - throw error - } -} - -function readSync(read, url, data) { - var readUrl = decodeUriComponent(url) - try { - return String(read(readUrl)) - } catch (error) { - error.sourceMapData = data - throw error - } -} - - - -function resolveSourceMap(code, codeUrl, read, callback) { - var mapData - try { - mapData = resolveSourceMapHelper(code, codeUrl) - } catch (error) { - return callbackAsync(callback, error) - } - if (!mapData || mapData.map) { - return callbackAsync(callback, null, mapData) - } - var readUrl = decodeUriComponent(mapData.url) - read(readUrl, function(error, result) { - if (error) { - error.sourceMapData = mapData - return callback(error) - } - mapData.map = String(result) - try { - mapData.map = parseMapToJSON(mapData.map, mapData) - } catch (error) { - return callback(error) - } - callback(null, mapData) - }) -} - -function resolveSourceMapSync(code, codeUrl, read) { - var mapData = resolveSourceMapHelper(code, codeUrl) - if (!mapData || mapData.map) { - return mapData - } - mapData.map = readSync(read, mapData.url, mapData) - mapData.map = parseMapToJSON(mapData.map, mapData) - return mapData -} - -var dataUriRegex = /^data:([^,;]*)(;[^,;]*)*(?:,(.*))?$/ -var jsonMimeTypeRegex = /^(?:application|text)\/json$/ - -function resolveSourceMapHelper(code, codeUrl) { - codeUrl = urix(codeUrl) - - var url = sourceMappingURL.getFrom(code) - if (!url) { - return null - } - - var dataUri = url.match(dataUriRegex) - if (dataUri) { - var mimeType = dataUri[1] - var lastParameter = dataUri[2] || "" - var encoded = dataUri[3] || "" - var data = { - sourceMappingURL: url, - url: null, - sourcesRelativeTo: codeUrl, - map: encoded - } - if (!jsonMimeTypeRegex.test(mimeType)) { - var error = new Error("Unuseful data uri mime type: " + (mimeType || "text/plain")) - error.sourceMapData = data - throw error - } - data.map = parseMapToJSON( - lastParameter === ";base64" ? atob(encoded) : decodeURIComponent(encoded), - data - ) - return data - } - - var mapUrl = resolveUrl(codeUrl, url) - return { - sourceMappingURL: url, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } -} - - - -function resolveSources(map, mapUrl, read, options, callback) { - if (typeof options === "function") { - callback = options - options = {} - } - var pending = map.sources ? map.sources.length : 0 - var result = { - sourcesResolved: [], - sourcesContent: [] - } - - if (pending === 0) { - callbackAsync(callback, null, result) - return - } - - var done = function() { - pending-- - if (pending === 0) { - callback(null, result) - } - } - - resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) { - result.sourcesResolved[index] = fullUrl - if (typeof sourceContent === "string") { - result.sourcesContent[index] = sourceContent - callbackAsync(done, null) - } else { - var readUrl = decodeUriComponent(fullUrl) - read(readUrl, function(error, source) { - result.sourcesContent[index] = error ? error : String(source) - done() - }) - } - }) -} - -function resolveSourcesSync(map, mapUrl, read, options) { - var result = { - sourcesResolved: [], - sourcesContent: [] - } - - if (!map.sources || map.sources.length === 0) { - return result - } - - resolveSourcesHelper(map, mapUrl, options, function(fullUrl, sourceContent, index) { - result.sourcesResolved[index] = fullUrl - if (read !== null) { - if (typeof sourceContent === "string") { - result.sourcesContent[index] = sourceContent - } else { - var readUrl = decodeUriComponent(fullUrl) - try { - result.sourcesContent[index] = String(read(readUrl)) - } catch (error) { - result.sourcesContent[index] = error - } - } - } - }) - - return result -} - -var endingSlash = /\/?$/ - -function resolveSourcesHelper(map, mapUrl, options, fn) { - options = options || {} - mapUrl = urix(mapUrl) - var fullUrl - var sourceContent - var sourceRoot - for (var index = 0, len = map.sources.length; index < len; index++) { - sourceRoot = null - if (typeof options.sourceRoot === "string") { - sourceRoot = options.sourceRoot - } else if (typeof map.sourceRoot === "string" && options.sourceRoot !== false) { - sourceRoot = map.sourceRoot - } - // If the sourceRoot is the empty string, it is equivalent to not setting - // the property at all. - if (sourceRoot === null || sourceRoot === '') { - fullUrl = resolveUrl(mapUrl, map.sources[index]) - } else { - // Make sure that the sourceRoot ends with a slash, so that `/scripts/subdir` becomes - // `/scripts/subdir/`, not `/scripts/`. Pointing to a file as source root - // does not make sense. - fullUrl = resolveUrl(mapUrl, sourceRoot.replace(endingSlash, "/"), map.sources[index]) - } - sourceContent = (map.sourcesContent || [])[index] - fn(fullUrl, sourceContent, index) - } -} - - - -function resolve(code, codeUrl, read, options, callback) { - if (typeof options === "function") { - callback = options - options = {} - } - if (code === null) { - var mapUrl = codeUrl - var data = { - sourceMappingURL: null, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } - var readUrl = decodeUriComponent(mapUrl) - read(readUrl, function(error, result) { - if (error) { - error.sourceMapData = data - return callback(error) - } - data.map = String(result) - try { - data.map = parseMapToJSON(data.map, data) - } catch (error) { - return callback(error) - } - _resolveSources(data) - }) - } else { - resolveSourceMap(code, codeUrl, read, function(error, mapData) { - if (error) { - return callback(error) - } - if (!mapData) { - return callback(null, null) - } - _resolveSources(mapData) - }) - } - - function _resolveSources(mapData) { - resolveSources(mapData.map, mapData.sourcesRelativeTo, read, options, function(error, result) { - if (error) { - return callback(error) - } - mapData.sourcesResolved = result.sourcesResolved - mapData.sourcesContent = result.sourcesContent - callback(null, mapData) - }) - } -} - -function resolveSync(code, codeUrl, read, options) { - var mapData - if (code === null) { - var mapUrl = codeUrl - mapData = { - sourceMappingURL: null, - url: mapUrl, - sourcesRelativeTo: mapUrl, - map: null - } - mapData.map = readSync(read, mapUrl, mapData) - mapData.map = parseMapToJSON(mapData.map, mapData) - } else { - mapData = resolveSourceMapSync(code, codeUrl, read) - if (!mapData) { - return null - } - } - var result = resolveSourcesSync(mapData.map, mapData.sourcesRelativeTo, read, options) - mapData.sourcesResolved = result.sourcesResolved - mapData.sourcesContent = result.sourcesContent - return mapData -} - - - -module.exports = { - resolveSourceMap: resolveSourceMap, - resolveSourceMapSync: resolveSourceMapSync, - resolveSources: resolveSources, - resolveSourcesSync: resolveSourcesSync, - resolve: resolve, - resolveSync: resolveSync, - parseMapToJSON: parseMapToJSON -} - - -/***/ }), - -/***/ "../../node_modules/source-map-url/source-map-url.js": -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -void (function(root, factory) { - if (true) { - !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : - __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) - } else {} -}(this, function() { - - var innerRegex = /[#@] sourceMappingURL=([^\s'"]*)/ - - var regex = RegExp( - "(?:" + - "/\\*" + - "(?:\\s*\r?\n(?://)?)?" + - "(?:" + innerRegex.source + ")" + - "\\s*" + - "\\*/" + - "|" + - "//(?:" + innerRegex.source + ")" + - ")" + - "\\s*" - ) - - return { - - regex: regex, - _innerRegex: innerRegex, - - getFrom: function(code) { - var match = code.match(regex) - return (match ? match[1] || match[2] || "" : null) - }, - - existsIn: function(code) { - return regex.test(code) - }, - - removeFrom: function(code) { - return code.replace(regex, "") - }, - - insertBefore: function(code, string) { - var match = code.match(regex) - if (match) { - return code.slice(0, match.index) + string + code.slice(match.index) - } else { - return code + string - } - } - } - -})); - - -/***/ }), - -/***/ "../../node_modules/spdx-expression-parse/index.js": -/***/ (function(module, exports, __webpack_require__) { - -var parser = __webpack_require__("../../node_modules/spdx-expression-parse/parser.js").parser - -module.exports = function (argument) { - return parser.parse(argument) -} - - -/***/ }), - -/***/ "../../node_modules/spdx-expression-parse/parser.js": -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module) {/* parser generated by jison 0.4.17 */ -/* - Returns a Parser object of the following structure: - - Parser: { - yy: {} - } - - Parser.prototype: { - yy: {}, - trace: function(), - symbols_: {associative list: name ==> number}, - terminals_: {associative list: number ==> name}, - productions_: [...], - performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$), - table: [...], - defaultActions: {...}, - parseError: function(str, hash), - parse: function(input), - - lexer: { - EOF: 1, - parseError: function(str, hash), - setInput: function(input), - input: function(), - unput: function(str), - more: function(), - less: function(n), - pastInput: function(), - upcomingInput: function(), - showPosition: function(), - test_match: function(regex_match_array, rule_index), - next: function(), - lex: function(), - begin: function(condition), - popState: function(), - _currentRules: function(), - topState: function(), - pushState: function(condition), - - options: { - ranges: boolean (optional: true ==> token location info will include a .range[] member) - flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match) - backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code) - }, - - performAction: function(yy, yy_, $avoiding_name_collisions, YY_START), - rules: [...], - conditions: {associative list: name ==> set}, - } - } - - - token location info (@$, _$, etc.): { - first_line: n, - last_line: n, - first_column: n, - last_column: n, - range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based) - } - - - the parseError function receives a 'hash' object with these members for lexer and parser errors: { - text: (matched text) - token: (the produced terminal token, if any) - line: (yylineno) - } - while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: { - loc: (yylloc) - expected: (string describing the set of expected tokens) - recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error) - } -*/ -var spdxparse = (function(){ -var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,5],$V1=[1,6],$V2=[1,7],$V3=[1,4],$V4=[1,9],$V5=[1,10],$V6=[5,14,15,17],$V7=[5,12,14,15,17]; -var parser = {trace: function trace() { }, -yy: {}, -symbols_: {"error":2,"start":3,"expression":4,"EOS":5,"simpleExpression":6,"LICENSE":7,"PLUS":8,"LICENSEREF":9,"DOCUMENTREF":10,"COLON":11,"WITH":12,"EXCEPTION":13,"AND":14,"OR":15,"OPEN":16,"CLOSE":17,"$accept":0,"$end":1}, -terminals_: {2:"error",5:"EOS",7:"LICENSE",8:"PLUS",9:"LICENSEREF",10:"DOCUMENTREF",11:"COLON",12:"WITH",13:"EXCEPTION",14:"AND",15:"OR",16:"OPEN",17:"CLOSE"}, -productions_: [0,[3,2],[6,1],[6,2],[6,1],[6,3],[4,1],[4,3],[4,3],[4,3],[4,3]], -performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { -/* this == yyval */ - -var $0 = $$.length - 1; -switch (yystate) { -case 1: -return this.$ = $$[$0-1] -break; -case 2: case 4: case 5: -this.$ = {license: yytext} -break; -case 3: -this.$ = {license: $$[$0-1], plus: true} -break; -case 6: -this.$ = $$[$0] -break; -case 7: -this.$ = {exception: $$[$0]} -this.$.license = $$[$0-2].license -if ($$[$0-2].hasOwnProperty('plus')) { - this.$.plus = $$[$0-2].plus -} -break; -case 8: -this.$ = {conjunction: 'and', left: $$[$0-2], right: $$[$0]} -break; -case 9: -this.$ = {conjunction: 'or', left: $$[$0-2], right: $$[$0]} -break; -case 10: -this.$ = $$[$0-1] -break; -} -}, -table: [{3:1,4:2,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{1:[3]},{5:[1,8],14:$V4,15:$V5},o($V6,[2,6],{12:[1,11]}),{4:12,6:3,7:$V0,9:$V1,10:$V2,16:$V3},o($V7,[2,2],{8:[1,13]}),o($V7,[2,4]),{11:[1,14]},{1:[2,1]},{4:15,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{4:16,6:3,7:$V0,9:$V1,10:$V2,16:$V3},{13:[1,17]},{14:$V4,15:$V5,17:[1,18]},o($V7,[2,3]),{9:[1,19]},o($V6,[2,8]),o([5,15,17],[2,9],{14:$V4}),o($V6,[2,7]),o($V6,[2,10]),o($V7,[2,5])], -defaultActions: {8:[2,1]}, -parseError: function parseError(str, hash) { - if (hash.recoverable) { - this.trace(str); - } else { - function _parseError (msg, hash) { - this.message = msg; - this.hash = hash; - } - _parseError.prototype = Error; - - throw new _parseError(str, hash); - } -}, -parse: function parse(input) { - var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1; - var args = lstack.slice.call(arguments, 1); - var lexer = Object.create(this.lexer); - var sharedState = { yy: {} }; - for (var k in this.yy) { - if (Object.prototype.hasOwnProperty.call(this.yy, k)) { - sharedState.yy[k] = this.yy[k]; - } - } - lexer.setInput(input, sharedState.yy); - sharedState.yy.lexer = lexer; - sharedState.yy.parser = this; - if (typeof lexer.yylloc == 'undefined') { - lexer.yylloc = {}; - } - var yyloc = lexer.yylloc; - lstack.push(yyloc); - var ranges = lexer.options && lexer.options.ranges; - if (typeof sharedState.yy.parseError === 'function') { - this.parseError = sharedState.yy.parseError; - } else { - this.parseError = Object.getPrototypeOf(this).parseError; - } - function popStack(n) { - stack.length = stack.length - 2 * n; - vstack.length = vstack.length - n; - lstack.length = lstack.length - n; - } - _token_stack: - var lex = function () { - var token; - token = lexer.lex() || EOF; - if (typeof token !== 'number') { - token = self.symbols_[token] || token; - } - return token; - }; - var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected; - while (true) { - state = stack[stack.length - 1]; - if (this.defaultActions[state]) { - action = this.defaultActions[state]; - } else { - if (symbol === null || typeof symbol == 'undefined') { - symbol = lex(); - } - action = table[state] && table[state][symbol]; - } - if (typeof action === 'undefined' || !action.length || !action[0]) { - var errStr = ''; - expected = []; - for (p in table[state]) { - if (this.terminals_[p] && p > TERROR) { - expected.push('\'' + this.terminals_[p] + '\''); - } - } - if (lexer.showPosition) { - errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\''; - } else { - errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\''); - } - this.parseError(errStr, { - text: lexer.match, - token: this.terminals_[symbol] || symbol, - line: lexer.yylineno, - loc: yyloc, - expected: expected - }); - } - if (action[0] instanceof Array && action.length > 1) { - throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol); - } - switch (action[0]) { - case 1: - stack.push(symbol); - vstack.push(lexer.yytext); - lstack.push(lexer.yylloc); - stack.push(action[1]); - symbol = null; - if (!preErrorSymbol) { - yyleng = lexer.yyleng; - yytext = lexer.yytext; - yylineno = lexer.yylineno; - yyloc = lexer.yylloc; - if (recovering > 0) { - recovering--; - } - } else { - symbol = preErrorSymbol; - preErrorSymbol = null; - } - break; - case 2: - len = this.productions_[action[1]][1]; - yyval.$ = vstack[vstack.length - len]; - yyval._$ = { - first_line: lstack[lstack.length - (len || 1)].first_line, - last_line: lstack[lstack.length - 1].last_line, - first_column: lstack[lstack.length - (len || 1)].first_column, - last_column: lstack[lstack.length - 1].last_column - }; - if (ranges) { - yyval._$.range = [ - lstack[lstack.length - (len || 1)].range[0], - lstack[lstack.length - 1].range[1] - ]; - } - r = this.performAction.apply(yyval, [ - yytext, - yyleng, - yylineno, - sharedState.yy, - action[1], - vstack, - lstack - ].concat(args)); - if (typeof r !== 'undefined') { - return r; - } - if (len) { - stack = stack.slice(0, -1 * len * 2); - vstack = vstack.slice(0, -1 * len); - lstack = lstack.slice(0, -1 * len); - } - stack.push(this.productions_[action[1]][0]); - vstack.push(yyval.$); - lstack.push(yyval._$); - newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; - stack.push(newState); - break; - case 3: - return true; - } - } - return true; -}}; -/* generated by jison-lex 0.3.4 */ -var lexer = (function(){ -var lexer = ({ - -EOF:1, - -parseError:function parseError(str, hash) { - if (this.yy.parser) { - this.yy.parser.parseError(str, hash); - } else { - throw new Error(str); - } - }, - -// resets the lexer, sets new input -setInput:function (input, yy) { - this.yy = yy || this.yy || {}; - this._input = input; - this._more = this._backtrack = this.done = false; - this.yylineno = this.yyleng = 0; - this.yytext = this.matched = this.match = ''; - this.conditionStack = ['INITIAL']; - this.yylloc = { - first_line: 1, - first_column: 0, - last_line: 1, - last_column: 0 - }; - if (this.options.ranges) { - this.yylloc.range = [0,0]; - } - this.offset = 0; - return this; - }, - -// consumes and returns one char from the input -input:function () { - var ch = this._input[0]; - this.yytext += ch; - this.yyleng++; - this.offset++; - this.match += ch; - this.matched += ch; - var lines = ch.match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno++; - this.yylloc.last_line++; - } else { - this.yylloc.last_column++; - } - if (this.options.ranges) { - this.yylloc.range[1]++; - } - - this._input = this._input.slice(1); - return ch; - }, - -// unshifts one char (or a string) into the input -unput:function (ch) { - var len = ch.length; - var lines = ch.split(/(?:\r\n?|\n)/g); - - this._input = ch + this._input; - this.yytext = this.yytext.substr(0, this.yytext.length - len); - //this.yyleng -= len; - this.offset -= len; - var oldLines = this.match.split(/(?:\r\n?|\n)/g); - this.match = this.match.substr(0, this.match.length - 1); - this.matched = this.matched.substr(0, this.matched.length - 1); - - if (lines.length - 1) { - this.yylineno -= lines.length - 1; - } - var r = this.yylloc.range; - - this.yylloc = { - first_line: this.yylloc.first_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.first_column, - last_column: lines ? - (lines.length === oldLines.length ? this.yylloc.first_column : 0) - + oldLines[oldLines.length - lines.length].length - lines[0].length : - this.yylloc.first_column - len - }; - - if (this.options.ranges) { - this.yylloc.range = [r[0], r[0] + this.yyleng - len]; - } - this.yyleng = this.yytext.length; - return this; - }, - -// When called from action, caches matched text and appends it on next action -more:function () { - this._more = true; - return this; - }, - -// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. -reject:function () { - if (this.options.backtrack_lexer) { - this._backtrack = true; - } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - - } - return this; - }, - -// retain first n characters of the match -less:function (n) { - this.unput(this.match.slice(n)); - }, - -// displays already matched input, i.e. for error messages -pastInput:function () { - var past = this.matched.substr(0, this.matched.length - this.match.length); - return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, ""); - }, - -// displays upcoming input, i.e. for error messages -upcomingInput:function () { - var next = this.match; - if (next.length < 20) { - next += this._input.substr(0, 20-next.length); - } - return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); - }, - -// displays the character position where the lexing error occurred, i.e. for error messages -showPosition:function () { - var pre = this.pastInput(); - var c = new Array(pre.length + 1).join("-"); - return pre + this.upcomingInput() + "\n" + c + "^"; - }, - -// test the lexed token: return FALSE when not a match, otherwise return token -test_match:function (match, indexed_rule) { - var token, - lines, - backup; - - if (this.options.backtrack_lexer) { - // save context - backup = { - yylineno: this.yylineno, - yylloc: { - first_line: this.yylloc.first_line, - last_line: this.last_line, - first_column: this.yylloc.first_column, - last_column: this.yylloc.last_column - }, - yytext: this.yytext, - match: this.match, - matches: this.matches, - matched: this.matched, - yyleng: this.yyleng, - offset: this.offset, - _more: this._more, - _input: this._input, - yy: this.yy, - conditionStack: this.conditionStack.slice(0), - done: this.done - }; - if (this.options.ranges) { - backup.yylloc.range = this.yylloc.range.slice(0); - } - } - - lines = match[0].match(/(?:\r\n?|\n).*/g); - if (lines) { - this.yylineno += lines.length; - } - this.yylloc = { - first_line: this.yylloc.last_line, - last_line: this.yylineno + 1, - first_column: this.yylloc.last_column, - last_column: lines ? - lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : - this.yylloc.last_column + match[0].length - }; - this.yytext += match[0]; - this.match += match[0]; - this.matches = match; - this.yyleng = this.yytext.length; - if (this.options.ranges) { - this.yylloc.range = [this.offset, this.offset += this.yyleng]; - } - this._more = false; - this._backtrack = false; - this._input = this._input.slice(match[0].length); - this.matched += match[0]; - token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); - if (this.done && this._input) { - this.done = false; - } - if (token) { - return token; - } else if (this._backtrack) { - // recover context - for (var k in backup) { - this[k] = backup[k]; - } - return false; // rule action called reject() implying the next rule should be tested instead. - } - return false; - }, - -// return next match in input -next:function () { - if (this.done) { - return this.EOF; - } - if (!this._input) { - this.done = true; - } - - var token, - match, - tempMatch, - index; - if (!this._more) { - this.yytext = ''; - this.match = ''; - } - var rules = this._currentRules(); - for (var i = 0; i < rules.length; i++) { - tempMatch = this._input.match(this.rules[rules[i]]); - if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { - match = tempMatch; - index = i; - if (this.options.backtrack_lexer) { - token = this.test_match(tempMatch, rules[i]); - if (token !== false) { - return token; - } else if (this._backtrack) { - match = false; - continue; // rule action called reject() implying a rule MISmatch. - } else { - // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) - return false; - } - } else if (!this.options.flex) { - break; - } - } - } - if (match) { - token = this.test_match(match, rules[index]); - if (token !== false) { - return token; - } - // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace) - return false; - } - if (this._input === "") { - return this.EOF; - } else { - return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { - text: "", - token: null, - line: this.yylineno - }); - } - }, - -// return next match that has a token -lex:function lex() { - var r = this.next(); - if (r) { - return r; - } else { - return this.lex(); - } - }, - -// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) -begin:function begin(condition) { - this.conditionStack.push(condition); - }, - -// pop the previously active lexer condition state off the condition stack -popState:function popState() { - var n = this.conditionStack.length - 1; - if (n > 0) { - return this.conditionStack.pop(); - } else { - return this.conditionStack[0]; - } - }, - -// produce the lexer rule set which is active for the currently active lexer condition state -_currentRules:function _currentRules() { - if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { - return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; - } else { - return this.conditions["INITIAL"].rules; - } - }, - -// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available -topState:function topState(n) { - n = this.conditionStack.length - 1 - Math.abs(n || 0); - if (n >= 0) { - return this.conditionStack[n]; - } else { - return "INITIAL"; - } - }, - -// alias for begin(condition) -pushState:function pushState(condition) { - this.begin(condition); - }, - -// return the number of states currently on the stack -stateStackSize:function stateStackSize() { - return this.conditionStack.length; - }, -options: {}, -performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { -var YYSTATE=YY_START; -switch($avoiding_name_collisions) { -case 0:return 5 -break; -case 1:/* skip whitespace */ -break; -case 2:return 8 -break; -case 3:return 16 -break; -case 4:return 17 -break; -case 5:return 11 -break; -case 6:return 10 -break; -case 7:return 9 -break; -case 8:return 14 -break; -case 9:return 15 -break; -case 10:return 12 -break; -case 11:return 7 -break; -case 12:return 7 -break; -case 13:return 7 -break; -case 14:return 7 -break; -case 15:return 7 -break; -case 16:return 7 -break; -case 17:return 7 -break; -case 18:return 7 -break; -case 19:return 7 -break; -case 20:return 7 -break; -case 21:return 7 -break; -case 22:return 7 -break; -case 23:return 7 -break; -case 24:return 13 -break; -case 25:return 13 -break; -case 26:return 13 -break; -case 27:return 13 -break; -case 28:return 13 -break; -case 29:return 13 -break; -case 30:return 13 -break; -case 31:return 13 -break; -case 32:return 7 -break; -case 33:return 13 -break; -case 34:return 7 -break; -case 35:return 13 -break; -case 36:return 7 -break; -case 37:return 13 -break; -case 38:return 13 -break; -case 39:return 7 -break; -case 40:return 13 -break; -case 41:return 13 -break; -case 42:return 13 -break; -case 43:return 13 -break; -case 44:return 13 -break; -case 45:return 7 -break; -case 46:return 13 -break; -case 47:return 7 -break; -case 48:return 7 -break; -case 49:return 7 -break; -case 50:return 7 -break; -case 51:return 7 -break; -case 52:return 7 -break; -case 53:return 7 -break; -case 54:return 7 -break; -case 55:return 7 -break; -case 56:return 7 -break; -case 57:return 7 -break; -case 58:return 7 -break; -case 59:return 7 -break; -case 60:return 7 -break; -case 61:return 7 -break; -case 62:return 7 -break; -case 63:return 13 -break; -case 64:return 7 -break; -case 65:return 7 -break; -case 66:return 13 -break; -case 67:return 7 -break; -case 68:return 7 -break; -case 69:return 7 -break; -case 70:return 7 -break; -case 71:return 7 -break; -case 72:return 7 -break; -case 73:return 13 -break; -case 74:return 7 -break; -case 75:return 13 -break; -case 76:return 7 -break; -case 77:return 7 -break; -case 78:return 7 -break; -case 79:return 7 -break; -case 80:return 7 -break; -case 81:return 7 -break; -case 82:return 7 -break; -case 83:return 7 -break; -case 84:return 7 -break; -case 85:return 7 -break; -case 86:return 7 -break; -case 87:return 7 -break; -case 88:return 7 -break; -case 89:return 7 -break; -case 90:return 7 -break; -case 91:return 7 -break; -case 92:return 7 -break; -case 93:return 7 -break; -case 94:return 7 -break; -case 95:return 7 -break; -case 96:return 7 -break; -case 97:return 7 -break; -case 98:return 7 -break; -case 99:return 7 -break; -case 100:return 7 -break; -case 101:return 7 -break; -case 102:return 7 -break; -case 103:return 7 -break; -case 104:return 7 -break; -case 105:return 7 -break; -case 106:return 7 -break; -case 107:return 7 -break; -case 108:return 7 -break; -case 109:return 7 -break; -case 110:return 7 -break; -case 111:return 7 -break; -case 112:return 7 -break; -case 113:return 7 -break; -case 114:return 7 -break; -case 115:return 7 -break; -case 116:return 7 -break; -case 117:return 7 -break; -case 118:return 7 -break; -case 119:return 7 -break; -case 120:return 7 -break; -case 121:return 7 -break; -case 122:return 7 -break; -case 123:return 7 -break; -case 124:return 7 -break; -case 125:return 7 -break; -case 126:return 7 -break; -case 127:return 7 -break; -case 128:return 7 -break; -case 129:return 7 -break; -case 130:return 7 -break; -case 131:return 7 -break; -case 132:return 7 -break; -case 133:return 7 -break; -case 134:return 7 -break; -case 135:return 7 -break; -case 136:return 7 -break; -case 137:return 7 -break; -case 138:return 7 -break; -case 139:return 7 -break; -case 140:return 7 -break; -case 141:return 7 -break; -case 142:return 7 -break; -case 143:return 7 -break; -case 144:return 7 -break; -case 145:return 7 -break; -case 146:return 7 -break; -case 147:return 7 -break; -case 148:return 7 -break; -case 149:return 7 -break; -case 150:return 7 -break; -case 151:return 7 -break; -case 152:return 7 -break; -case 153:return 7 -break; -case 154:return 7 -break; -case 155:return 7 -break; -case 156:return 7 -break; -case 157:return 7 -break; -case 158:return 7 -break; -case 159:return 7 -break; -case 160:return 7 -break; -case 161:return 7 -break; -case 162:return 7 -break; -case 163:return 7 -break; -case 164:return 7 -break; -case 165:return 7 -break; -case 166:return 7 -break; -case 167:return 7 -break; -case 168:return 7 -break; -case 169:return 7 -break; -case 170:return 7 -break; -case 171:return 7 -break; -case 172:return 7 -break; -case 173:return 7 -break; -case 174:return 7 -break; -case 175:return 7 -break; -case 176:return 7 -break; -case 177:return 7 -break; -case 178:return 7 -break; -case 179:return 7 -break; -case 180:return 7 -break; -case 181:return 7 -break; -case 182:return 7 -break; -case 183:return 7 -break; -case 184:return 7 -break; -case 185:return 7 -break; -case 186:return 7 -break; -case 187:return 7 -break; -case 188:return 7 -break; -case 189:return 7 -break; -case 190:return 7 -break; -case 191:return 7 -break; -case 192:return 7 -break; -case 193:return 7 -break; -case 194:return 7 -break; -case 195:return 7 -break; -case 196:return 7 -break; -case 197:return 7 -break; -case 198:return 7 -break; -case 199:return 7 -break; -case 200:return 7 -break; -case 201:return 7 -break; -case 202:return 7 -break; -case 203:return 7 -break; -case 204:return 7 -break; -case 205:return 7 -break; -case 206:return 7 -break; -case 207:return 7 -break; -case 208:return 7 -break; -case 209:return 7 -break; -case 210:return 7 -break; -case 211:return 7 -break; -case 212:return 7 -break; -case 213:return 7 -break; -case 214:return 7 -break; -case 215:return 7 -break; -case 216:return 7 -break; -case 217:return 7 -break; -case 218:return 7 -break; -case 219:return 7 -break; -case 220:return 7 -break; -case 221:return 7 -break; -case 222:return 7 -break; -case 223:return 7 -break; -case 224:return 7 -break; -case 225:return 7 -break; -case 226:return 7 -break; -case 227:return 7 -break; -case 228:return 7 -break; -case 229:return 7 -break; -case 230:return 7 -break; -case 231:return 7 -break; -case 232:return 7 -break; -case 233:return 7 -break; -case 234:return 7 -break; -case 235:return 7 -break; -case 236:return 7 -break; -case 237:return 7 -break; -case 238:return 7 -break; -case 239:return 7 -break; -case 240:return 7 -break; -case 241:return 7 -break; -case 242:return 7 -break; -case 243:return 7 -break; -case 244:return 7 -break; -case 245:return 7 -break; -case 246:return 7 -break; -case 247:return 7 -break; -case 248:return 7 -break; -case 249:return 7 -break; -case 250:return 7 -break; -case 251:return 7 -break; -case 252:return 7 -break; -case 253:return 7 -break; -case 254:return 7 -break; -case 255:return 7 -break; -case 256:return 7 -break; -case 257:return 7 -break; -case 258:return 7 -break; -case 259:return 7 -break; -case 260:return 7 -break; -case 261:return 7 -break; -case 262:return 7 -break; -case 263:return 7 -break; -case 264:return 7 -break; -case 265:return 7 -break; -case 266:return 7 -break; -case 267:return 7 -break; -case 268:return 7 -break; -case 269:return 7 -break; -case 270:return 7 -break; -case 271:return 7 -break; -case 272:return 7 -break; -case 273:return 7 -break; -case 274:return 7 -break; -case 275:return 7 -break; -case 276:return 7 -break; -case 277:return 7 -break; -case 278:return 7 -break; -case 279:return 7 -break; -case 280:return 7 -break; -case 281:return 7 -break; -case 282:return 7 -break; -case 283:return 7 -break; -case 284:return 7 -break; -case 285:return 7 -break; -case 286:return 7 -break; -case 287:return 7 -break; -case 288:return 7 -break; -case 289:return 7 -break; -case 290:return 7 -break; -case 291:return 7 -break; -case 292:return 7 -break; -case 293:return 7 -break; -case 294:return 7 -break; -case 295:return 7 -break; -case 296:return 7 -break; -case 297:return 7 -break; -case 298:return 7 -break; -case 299:return 7 -break; -case 300:return 7 -break; -case 301:return 7 -break; -case 302:return 7 -break; -case 303:return 7 -break; -case 304:return 7 -break; -case 305:return 7 -break; -case 306:return 7 -break; -case 307:return 7 -break; -case 308:return 7 -break; -case 309:return 7 -break; -case 310:return 7 -break; -case 311:return 7 -break; -case 312:return 7 -break; -case 313:return 7 -break; -case 314:return 7 -break; -case 315:return 7 -break; -case 316:return 7 -break; -case 317:return 7 -break; -case 318:return 7 -break; -case 319:return 7 -break; -case 320:return 7 -break; -case 321:return 7 -break; -case 322:return 7 -break; -case 323:return 7 -break; -case 324:return 7 -break; -case 325:return 7 -break; -case 326:return 7 -break; -case 327:return 7 -break; -case 328:return 7 -break; -case 329:return 7 -break; -case 330:return 7 -break; -case 331:return 7 -break; -case 332:return 7 -break; -case 333:return 7 -break; -case 334:return 7 -break; -case 335:return 7 -break; -case 336:return 7 -break; -case 337:return 7 -break; -case 338:return 7 -break; -case 339:return 7 -break; -case 340:return 7 -break; -case 341:return 7 -break; -case 342:return 7 -break; -case 343:return 7 -break; -case 344:return 7 -break; -case 345:return 7 -break; -case 346:return 7 -break; -case 347:return 7 -break; -case 348:return 7 -break; -case 349:return 7 -break; -case 350:return 7 -break; -case 351:return 7 -break; -case 352:return 7 -break; -case 353:return 7 -break; -case 354:return 7 -break; -case 355:return 7 -break; -case 356:return 7 -break; -case 357:return 7 -break; -case 358:return 7 -break; -case 359:return 7 -break; -case 360:return 7 -break; -case 361:return 7 -break; -case 362:return 7 -break; -case 363:return 7 -break; -case 364:return 7 -break; -} -}, -rules: [/^(?:$)/,/^(?:\s+)/,/^(?:\+)/,/^(?:\()/,/^(?:\))/,/^(?::)/,/^(?:DocumentRef-([0-9A-Za-z-+.]+))/,/^(?:LicenseRef-([0-9A-Za-z-+.]+))/,/^(?:AND)/,/^(?:OR)/,/^(?:WITH)/,/^(?:BSD-3-Clause-No-Nuclear-License-2014)/,/^(?:BSD-3-Clause-No-Nuclear-Warranty)/,/^(?:GPL-2\.0-with-classpath-exception)/,/^(?:GPL-3\.0-with-autoconf-exception)/,/^(?:GPL-2\.0-with-autoconf-exception)/,/^(?:BSD-3-Clause-No-Nuclear-License)/,/^(?:MPL-2\.0-no-copyleft-exception)/,/^(?:GPL-2\.0-with-bison-exception)/,/^(?:GPL-2\.0-with-font-exception)/,/^(?:GPL-2\.0-with-GCC-exception)/,/^(?:CNRI-Python-GPL-Compatible)/,/^(?:GPL-3\.0-with-GCC-exception)/,/^(?:BSD-3-Clause-Attribution)/,/^(?:Classpath-exception-2\.0)/,/^(?:WxWindows-exception-3\.1)/,/^(?:freertos-exception-2\.0)/,/^(?:Autoconf-exception-3\.0)/,/^(?:i2p-gpl-java-exception)/,/^(?:gnu-javamail-exception)/,/^(?:Nokia-Qt-exception-1\.1)/,/^(?:Autoconf-exception-2\.0)/,/^(?:BSD-2-Clause-FreeBSD)/,/^(?:u-boot-exception-2\.0)/,/^(?:zlib-acknowledgement)/,/^(?:Bison-exception-2\.2)/,/^(?:BSD-2-Clause-NetBSD)/,/^(?:CLISP-exception-2\.0)/,/^(?:eCos-exception-2\.0)/,/^(?:BSD-3-Clause-Clear)/,/^(?:Font-exception-2\.0)/,/^(?:FLTK-exception-2\.0)/,/^(?:GCC-exception-2\.0)/,/^(?:Qwt-exception-1\.0)/,/^(?:Libtool-exception)/,/^(?:BSD-3-Clause-LBNL)/,/^(?:GCC-exception-3\.1)/,/^(?:Artistic-1\.0-Perl)/,/^(?:Artistic-1\.0-cl8)/,/^(?:CC-BY-NC-SA-2\.5)/,/^(?:MIT-advertising)/,/^(?:BSD-Source-Code)/,/^(?:CC-BY-NC-SA-4\.0)/,/^(?:LiLiQ-Rplus-1\.1)/,/^(?:CC-BY-NC-SA-3\.0)/,/^(?:BSD-4-Clause-UC)/,/^(?:CC-BY-NC-SA-2\.0)/,/^(?:CC-BY-NC-SA-1\.0)/,/^(?:CC-BY-NC-ND-4\.0)/,/^(?:CC-BY-NC-ND-3\.0)/,/^(?:CC-BY-NC-ND-2\.5)/,/^(?:CC-BY-NC-ND-2\.0)/,/^(?:CC-BY-NC-ND-1\.0)/,/^(?:LZMA-exception)/,/^(?:BitTorrent-1\.1)/,/^(?:CrystalStacker)/,/^(?:FLTK-exception)/,/^(?:SugarCRM-1\.1\.3)/,/^(?:BSD-Protection)/,/^(?:BitTorrent-1\.0)/,/^(?:HaskellReport)/,/^(?:Interbase-1\.0)/,/^(?:StandardML-NJ)/,/^(?:mif-exception)/,/^(?:Frameworx-1\.0)/,/^(?:389-exception)/,/^(?:CC-BY-NC-2\.0)/,/^(?:CC-BY-NC-2\.5)/,/^(?:CC-BY-NC-3\.0)/,/^(?:CC-BY-NC-4\.0)/,/^(?:W3C-19980720)/,/^(?:CC-BY-SA-1\.0)/,/^(?:CC-BY-SA-2\.0)/,/^(?:CC-BY-SA-2\.5)/,/^(?:CC-BY-ND-2\.0)/,/^(?:CC-BY-SA-4\.0)/,/^(?:CC-BY-SA-3\.0)/,/^(?:Artistic-1\.0)/,/^(?:Artistic-2\.0)/,/^(?:CC-BY-ND-2\.5)/,/^(?:CC-BY-ND-3\.0)/,/^(?:CC-BY-ND-4\.0)/,/^(?:CC-BY-ND-1\.0)/,/^(?:BSD-4-Clause)/,/^(?:BSD-3-Clause)/,/^(?:BSD-2-Clause)/,/^(?:CC-BY-NC-1\.0)/,/^(?:bzip2-1\.0\.6)/,/^(?:Unicode-TOU)/,/^(?:CNRI-Jython)/,/^(?:ImageMagick)/,/^(?:Adobe-Glyph)/,/^(?:CUA-OPL-1\.0)/,/^(?:OLDAP-2\.2\.2)/,/^(?:LiLiQ-R-1\.1)/,/^(?:bzip2-1\.0\.5)/,/^(?:LiLiQ-P-1\.1)/,/^(?:OLDAP-2\.0\.1)/,/^(?:OLDAP-2\.2\.1)/,/^(?:CNRI-Python)/,/^(?:XFree86-1\.1)/,/^(?:OSET-PL-2\.1)/,/^(?:Apache-2\.0)/,/^(?:Watcom-1\.0)/,/^(?:PostgreSQL)/,/^(?:Python-2\.0)/,/^(?:RHeCos-1\.1)/,/^(?:EUDatagrid)/,/^(?:Spencer-99)/,/^(?:Intel-ACPI)/,/^(?:CECILL-1\.0)/,/^(?:CECILL-1\.1)/,/^(?:JasPer-2\.0)/,/^(?:CECILL-2\.0)/,/^(?:CECILL-2\.1)/,/^(?:gSOAP-1\.3b)/,/^(?:Spencer-94)/,/^(?:Apache-1\.1)/,/^(?:Spencer-86)/,/^(?:Apache-1\.0)/,/^(?:ClArtistic)/,/^(?:TORQUE-1\.1)/,/^(?:CATOSL-1\.1)/,/^(?:Adobe-2006)/,/^(?:Zimbra-1\.4)/,/^(?:Zimbra-1\.3)/,/^(?:Condor-1\.1)/,/^(?:CC-BY-3\.0)/,/^(?:CC-BY-2\.5)/,/^(?:OLDAP-2\.4)/,/^(?:SGI-B-1\.1)/,/^(?:SISSL-1\.2)/,/^(?:SGI-B-1\.0)/,/^(?:OLDAP-2\.3)/,/^(?:CC-BY-4\.0)/,/^(?:Crossword)/,/^(?:SimPL-2\.0)/,/^(?:OLDAP-2\.2)/,/^(?:OLDAP-2\.1)/,/^(?:ErlPL-1\.1)/,/^(?:LPPL-1\.3a)/,/^(?:LPPL-1\.3c)/,/^(?:OLDAP-2\.0)/,/^(?:Leptonica)/,/^(?:CPOL-1\.02)/,/^(?:OLDAP-1\.4)/,/^(?:OLDAP-1\.3)/,/^(?:CC-BY-2\.0)/,/^(?:Unlicense)/,/^(?:OLDAP-2\.8)/,/^(?:OLDAP-1\.2)/,/^(?:MakeIndex)/,/^(?:OLDAP-2\.7)/,/^(?:OLDAP-1\.1)/,/^(?:Sleepycat)/,/^(?:D-FSL-1\.0)/,/^(?:CC-BY-1\.0)/,/^(?:OLDAP-2\.6)/,/^(?:WXwindows)/,/^(?:NPOSL-3\.0)/,/^(?:FreeImage)/,/^(?:SGI-B-2\.0)/,/^(?:OLDAP-2\.5)/,/^(?:Beerware)/,/^(?:Newsletr)/,/^(?:NBPL-1\.0)/,/^(?:NASA-1\.3)/,/^(?:NLOD-1\.0)/,/^(?:AGPL-1\.0)/,/^(?:OCLC-2\.0)/,/^(?:ODbL-1\.0)/,/^(?:PDDL-1\.0)/,/^(?:Motosoto)/,/^(?:Afmparse)/,/^(?:ANTLR-PD)/,/^(?:LPL-1\.02)/,/^(?:Abstyles)/,/^(?:eCos-2\.0)/,/^(?:APSL-1\.0)/,/^(?:LPPL-1\.2)/,/^(?:LPPL-1\.1)/,/^(?:LPPL-1\.0)/,/^(?:APSL-1\.1)/,/^(?:APSL-2\.0)/,/^(?:Info-ZIP)/,/^(?:Zend-2\.0)/,/^(?:IBM-pibs)/,/^(?:LGPL-2\.0)/,/^(?:LGPL-3\.0)/,/^(?:LGPL-2\.1)/,/^(?:GFDL-1\.3)/,/^(?:PHP-3\.01)/,/^(?:GFDL-1\.2)/,/^(?:GFDL-1\.1)/,/^(?:AGPL-3\.0)/,/^(?:Giftware)/,/^(?:EUPL-1\.1)/,/^(?:RPSL-1\.0)/,/^(?:EUPL-1\.0)/,/^(?:MIT-enna)/,/^(?:CECILL-B)/,/^(?:diffmark)/,/^(?:CECILL-C)/,/^(?:CDDL-1\.0)/,/^(?:Sendmail)/,/^(?:CDDL-1\.1)/,/^(?:CPAL-1\.0)/,/^(?:APSL-1\.2)/,/^(?:NPL-1\.1)/,/^(?:AFL-1\.2)/,/^(?:Caldera)/,/^(?:AFL-2\.0)/,/^(?:FSFULLR)/,/^(?:AFL-2\.1)/,/^(?:VSL-1\.0)/,/^(?:VOSTROM)/,/^(?:UPL-1\.0)/,/^(?:Dotseqn)/,/^(?:CPL-1\.0)/,/^(?:dvipdfm)/,/^(?:EPL-1\.0)/,/^(?:OCCT-PL)/,/^(?:ECL-1\.0)/,/^(?:Latex2e)/,/^(?:ECL-2\.0)/,/^(?:GPL-1\.0)/,/^(?:GPL-2\.0)/,/^(?:GPL-3\.0)/,/^(?:AFL-3\.0)/,/^(?:LAL-1\.2)/,/^(?:LAL-1\.3)/,/^(?:EFL-1\.0)/,/^(?:EFL-2\.0)/,/^(?:gnuplot)/,/^(?:Aladdin)/,/^(?:LPL-1\.0)/,/^(?:libtiff)/,/^(?:Entessa)/,/^(?:AMDPLPA)/,/^(?:IPL-1\.0)/,/^(?:OPL-1\.0)/,/^(?:OSL-1\.0)/,/^(?:OSL-1\.1)/,/^(?:OSL-2\.0)/,/^(?:OSL-2\.1)/,/^(?:OSL-3\.0)/,/^(?:OpenSSL)/,/^(?:ZPL-2\.1)/,/^(?:PHP-3\.0)/,/^(?:ZPL-2\.0)/,/^(?:ZPL-1\.1)/,/^(?:CC0-1\.0)/,/^(?:SPL-1\.0)/,/^(?:psutils)/,/^(?:MPL-1\.0)/,/^(?:QPL-1\.0)/,/^(?:MPL-1\.1)/,/^(?:MPL-2\.0)/,/^(?:APL-1\.0)/,/^(?:RPL-1\.1)/,/^(?:RPL-1\.5)/,/^(?:MIT-CMU)/,/^(?:Multics)/,/^(?:Eurosym)/,/^(?:BSL-1\.0)/,/^(?:MIT-feh)/,/^(?:Saxpath)/,/^(?:Borceux)/,/^(?:OFL-1\.1)/,/^(?:OFL-1\.0)/,/^(?:AFL-1\.1)/,/^(?:YPL-1\.1)/,/^(?:YPL-1\.0)/,/^(?:NPL-1\.0)/,/^(?:iMatix)/,/^(?:mpich2)/,/^(?:APAFML)/,/^(?:Bahyph)/,/^(?:RSA-MD)/,/^(?:psfrag)/,/^(?:Plexus)/,/^(?:eGenix)/,/^(?:Glulxe)/,/^(?:SAX-PD)/,/^(?:Imlib2)/,/^(?:Wsuipa)/,/^(?:LGPLLR)/,/^(?:Libpng)/,/^(?:xinetd)/,/^(?:MITNFA)/,/^(?:NetCDF)/,/^(?:Naumen)/,/^(?:SMPPL)/,/^(?:Nunit)/,/^(?:FSFUL)/,/^(?:GL2PS)/,/^(?:SMLNJ)/,/^(?:Rdisc)/,/^(?:Noweb)/,/^(?:Nokia)/,/^(?:SISSL)/,/^(?:Qhull)/,/^(?:Intel)/,/^(?:Glide)/,/^(?:Xerox)/,/^(?:AMPAS)/,/^(?:WTFPL)/,/^(?:MS-PL)/,/^(?:XSkat)/,/^(?:MS-RL)/,/^(?:MirOS)/,/^(?:RSCPL)/,/^(?:TMate)/,/^(?:OGTSL)/,/^(?:FSFAP)/,/^(?:NCSA)/,/^(?:Zlib)/,/^(?:SCEA)/,/^(?:SNIA)/,/^(?:NGPL)/,/^(?:NOSL)/,/^(?:ADSL)/,/^(?:MTLL)/,/^(?:NLPL)/,/^(?:Ruby)/,/^(?:JSON)/,/^(?:Barr)/,/^(?:0BSD)/,/^(?:Xnet)/,/^(?:Cube)/,/^(?:curl)/,/^(?:DSDP)/,/^(?:Fair)/,/^(?:HPND)/,/^(?:TOSL)/,/^(?:IJG)/,/^(?:SWL)/,/^(?:Vim)/,/^(?:FTL)/,/^(?:ICU)/,/^(?:OML)/,/^(?:NRL)/,/^(?:DOC)/,/^(?:TCL)/,/^(?:W3C)/,/^(?:NTP)/,/^(?:IPA)/,/^(?:ISC)/,/^(?:X11)/,/^(?:AAL)/,/^(?:AML)/,/^(?:xpp)/,/^(?:Zed)/,/^(?:MIT)/,/^(?:Mup)/], -conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364],"inclusive":true}} -}); -return lexer; -})(); -parser.lexer = lexer; -function Parser () { - this.yy = {}; -} -Parser.prototype = parser;parser.Parser = Parser; -return new Parser; -})(); - - -if (true) { -exports.parser = spdxparse; -exports.Parser = spdxparse.Parser; -exports.parse = function () { return spdxparse.parse.apply(spdxparse, arguments); }; -exports.main = function commonjsMain(args) { - if (!args[1]) { - console.log('Usage: '+args[0]+' FILE'); - process.exit(1); - } - var source = __webpack_require__("fs").readFileSync(__webpack_require__("path").normalize(args[1]), "utf8"); - return exports.parser.parse(source); -}; -if ( true && __webpack_require__.c[__webpack_require__.s] === module) { - exports.main(process.argv.slice(1)); -} -} - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("../../node_modules/webpack/buildin/module.js")(module))) - -/***/ }), - -/***/ "../../node_modules/spdx-license-ids/spdx-license-ids.json": -/***/ (function(module) { - -module.exports = JSON.parse("[\"Glide\",\"Abstyles\",\"AFL-1.1\",\"AFL-1.2\",\"AFL-2.0\",\"AFL-2.1\",\"AFL-3.0\",\"AMPAS\",\"APL-1.0\",\"Adobe-Glyph\",\"APAFML\",\"Adobe-2006\",\"AGPL-1.0\",\"Afmparse\",\"Aladdin\",\"ADSL\",\"AMDPLPA\",\"ANTLR-PD\",\"Apache-1.0\",\"Apache-1.1\",\"Apache-2.0\",\"AML\",\"APSL-1.0\",\"APSL-1.1\",\"APSL-1.2\",\"APSL-2.0\",\"Artistic-1.0\",\"Artistic-1.0-Perl\",\"Artistic-1.0-cl8\",\"Artistic-2.0\",\"AAL\",\"Bahyph\",\"Barr\",\"Beerware\",\"BitTorrent-1.0\",\"BitTorrent-1.1\",\"BSL-1.0\",\"Borceux\",\"BSD-2-Clause\",\"BSD-2-Clause-FreeBSD\",\"BSD-2-Clause-NetBSD\",\"BSD-3-Clause\",\"BSD-3-Clause-Clear\",\"BSD-4-Clause\",\"BSD-Protection\",\"BSD-Source-Code\",\"BSD-3-Clause-Attribution\",\"0BSD\",\"BSD-4-Clause-UC\",\"bzip2-1.0.5\",\"bzip2-1.0.6\",\"Caldera\",\"CECILL-1.0\",\"CECILL-1.1\",\"CECILL-2.0\",\"CECILL-2.1\",\"CECILL-B\",\"CECILL-C\",\"ClArtistic\",\"MIT-CMU\",\"CNRI-Jython\",\"CNRI-Python\",\"CNRI-Python-GPL-Compatible\",\"CPOL-1.02\",\"CDDL-1.0\",\"CDDL-1.1\",\"CPAL-1.0\",\"CPL-1.0\",\"CATOSL-1.1\",\"Condor-1.1\",\"CC-BY-1.0\",\"CC-BY-2.0\",\"CC-BY-2.5\",\"CC-BY-3.0\",\"CC-BY-4.0\",\"CC-BY-ND-1.0\",\"CC-BY-ND-2.0\",\"CC-BY-ND-2.5\",\"CC-BY-ND-3.0\",\"CC-BY-ND-4.0\",\"CC-BY-NC-1.0\",\"CC-BY-NC-2.0\",\"CC-BY-NC-2.5\",\"CC-BY-NC-3.0\",\"CC-BY-NC-4.0\",\"CC-BY-NC-ND-1.0\",\"CC-BY-NC-ND-2.0\",\"CC-BY-NC-ND-2.5\",\"CC-BY-NC-ND-3.0\",\"CC-BY-NC-ND-4.0\",\"CC-BY-NC-SA-1.0\",\"CC-BY-NC-SA-2.0\",\"CC-BY-NC-SA-2.5\",\"CC-BY-NC-SA-3.0\",\"CC-BY-NC-SA-4.0\",\"CC-BY-SA-1.0\",\"CC-BY-SA-2.0\",\"CC-BY-SA-2.5\",\"CC-BY-SA-3.0\",\"CC-BY-SA-4.0\",\"CC0-1.0\",\"Crossword\",\"CrystalStacker\",\"CUA-OPL-1.0\",\"Cube\",\"curl\",\"D-FSL-1.0\",\"diffmark\",\"WTFPL\",\"DOC\",\"Dotseqn\",\"DSDP\",\"dvipdfm\",\"EPL-1.0\",\"ECL-1.0\",\"ECL-2.0\",\"eGenix\",\"EFL-1.0\",\"EFL-2.0\",\"MIT-advertising\",\"MIT-enna\",\"Entessa\",\"ErlPL-1.1\",\"EUDatagrid\",\"EUPL-1.0\",\"EUPL-1.1\",\"Eurosym\",\"Fair\",\"MIT-feh\",\"Frameworx-1.0\",\"FreeImage\",\"FTL\",\"FSFAP\",\"FSFUL\",\"FSFULLR\",\"Giftware\",\"GL2PS\",\"Glulxe\",\"AGPL-3.0\",\"GFDL-1.1\",\"GFDL-1.2\",\"GFDL-1.3\",\"GPL-1.0\",\"GPL-2.0\",\"GPL-3.0\",\"LGPL-2.1\",\"LGPL-3.0\",\"LGPL-2.0\",\"gnuplot\",\"gSOAP-1.3b\",\"HaskellReport\",\"HPND\",\"IBM-pibs\",\"IPL-1.0\",\"ICU\",\"ImageMagick\",\"iMatix\",\"Imlib2\",\"IJG\",\"Info-ZIP\",\"Intel-ACPI\",\"Intel\",\"Interbase-1.0\",\"IPA\",\"ISC\",\"JasPer-2.0\",\"JSON\",\"LPPL-1.0\",\"LPPL-1.1\",\"LPPL-1.2\",\"LPPL-1.3a\",\"LPPL-1.3c\",\"Latex2e\",\"BSD-3-Clause-LBNL\",\"Leptonica\",\"LGPLLR\",\"Libpng\",\"libtiff\",\"LAL-1.2\",\"LAL-1.3\",\"LiLiQ-P-1.1\",\"LiLiQ-Rplus-1.1\",\"LiLiQ-R-1.1\",\"LPL-1.02\",\"LPL-1.0\",\"MakeIndex\",\"MTLL\",\"MS-PL\",\"MS-RL\",\"MirOS\",\"MITNFA\",\"MIT\",\"Motosoto\",\"MPL-1.0\",\"MPL-1.1\",\"MPL-2.0\",\"MPL-2.0-no-copyleft-exception\",\"mpich2\",\"Multics\",\"Mup\",\"NASA-1.3\",\"Naumen\",\"NBPL-1.0\",\"NetCDF\",\"NGPL\",\"NOSL\",\"NPL-1.0\",\"NPL-1.1\",\"Newsletr\",\"NLPL\",\"Nokia\",\"NPOSL-3.0\",\"NLOD-1.0\",\"Noweb\",\"NRL\",\"NTP\",\"Nunit\",\"OCLC-2.0\",\"ODbL-1.0\",\"PDDL-1.0\",\"OCCT-PL\",\"OGTSL\",\"OLDAP-2.2.2\",\"OLDAP-1.1\",\"OLDAP-1.2\",\"OLDAP-1.3\",\"OLDAP-1.4\",\"OLDAP-2.0\",\"OLDAP-2.0.1\",\"OLDAP-2.1\",\"OLDAP-2.2\",\"OLDAP-2.2.1\",\"OLDAP-2.3\",\"OLDAP-2.4\",\"OLDAP-2.5\",\"OLDAP-2.6\",\"OLDAP-2.7\",\"OLDAP-2.8\",\"OML\",\"OPL-1.0\",\"OSL-1.0\",\"OSL-1.1\",\"OSL-2.0\",\"OSL-2.1\",\"OSL-3.0\",\"OpenSSL\",\"OSET-PL-2.1\",\"PHP-3.0\",\"PHP-3.01\",\"Plexus\",\"PostgreSQL\",\"psfrag\",\"psutils\",\"Python-2.0\",\"QPL-1.0\",\"Qhull\",\"Rdisc\",\"RPSL-1.0\",\"RPL-1.1\",\"RPL-1.5\",\"RHeCos-1.1\",\"RSCPL\",\"RSA-MD\",\"Ruby\",\"SAX-PD\",\"Saxpath\",\"SCEA\",\"SWL\",\"SMPPL\",\"Sendmail\",\"SGI-B-1.0\",\"SGI-B-1.1\",\"SGI-B-2.0\",\"OFL-1.0\",\"OFL-1.1\",\"SimPL-2.0\",\"Sleepycat\",\"SNIA\",\"Spencer-86\",\"Spencer-94\",\"Spencer-99\",\"SMLNJ\",\"SugarCRM-1.1.3\",\"SISSL\",\"SISSL-1.2\",\"SPL-1.0\",\"Watcom-1.0\",\"TCL\",\"Unlicense\",\"TMate\",\"TORQUE-1.1\",\"TOSL\",\"Unicode-TOU\",\"UPL-1.0\",\"NCSA\",\"Vim\",\"VOSTROM\",\"VSL-1.0\",\"W3C-19980720\",\"W3C\",\"Wsuipa\",\"Xnet\",\"X11\",\"Xerox\",\"XFree86-1.1\",\"xinetd\",\"xpp\",\"XSkat\",\"YPL-1.0\",\"YPL-1.1\",\"Zed\",\"Zend-2.0\",\"Zimbra-1.3\",\"Zimbra-1.4\",\"Zlib\",\"zlib-acknowledgement\",\"ZPL-1.1\",\"ZPL-2.0\",\"ZPL-2.1\",\"BSD-3-Clause-No-Nuclear-License\",\"BSD-3-Clause-No-Nuclear-Warranty\",\"BSD-3-Clause-No-Nuclear-License-2014\",\"eCos-2.0\",\"GPL-2.0-with-autoconf-exception\",\"GPL-2.0-with-bison-exception\",\"GPL-2.0-with-classpath-exception\",\"GPL-2.0-with-font-exception\",\"GPL-2.0-with-GCC-exception\",\"GPL-3.0-with-autoconf-exception\",\"GPL-3.0-with-GCC-exception\",\"StandardML-NJ\",\"WXwindows\"]"); - -/***/ }), - -/***/ "../../node_modules/split-string/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * split-string - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var extend = __webpack_require__("../../node_modules/split-string/node_modules/extend-shallow/index.js"); - -module.exports = function(str, options, fn) { - if (typeof str !== 'string') { - throw new TypeError('expected a string'); - } - - if (typeof options === 'function') { - fn = options; - options = null; - } - - // allow separator to be defined as a string - if (typeof options === 'string') { - options = { sep: options }; - } - - var opts = extend({sep: '.'}, options); - var quotes = opts.quotes || ['"', "'", '`']; - var brackets; - - if (opts.brackets === true) { - brackets = { - '<': '>', - '(': ')', - '[': ']', - '{': '}' - }; - } else if (opts.brackets) { - brackets = opts.brackets; - } - - var tokens = []; - var stack = []; - var arr = ['']; - var sep = opts.sep; - var len = str.length; - var idx = -1; - var closeIdx; - - function expected() { - if (brackets && stack.length) { - return brackets[stack[stack.length - 1]]; - } - } - - while (++idx < len) { - var ch = str[idx]; - var next = str[idx + 1]; - var tok = { val: ch, idx: idx, arr: arr, str: str }; - tokens.push(tok); - - if (ch === '\\') { - tok.val = keepEscaping(opts, str, idx) === true ? (ch + next) : next; - tok.escaped = true; - if (typeof fn === 'function') { - fn(tok); - } - arr[arr.length - 1] += tok.val; - idx++; - continue; - } - - if (brackets && brackets[ch]) { - stack.push(ch); - var e = expected(); - var i = idx + 1; - - if (str.indexOf(e, i + 1) !== -1) { - while (stack.length && i < len) { - var s = str[++i]; - if (s === '\\') { - s++; - continue; - } - - if (quotes.indexOf(s) !== -1) { - i = getClosingQuote(str, s, i + 1); - continue; - } - - e = expected(); - if (stack.length && str.indexOf(e, i + 1) === -1) { - break; - } - - if (brackets[s]) { - stack.push(s); - continue; - } - - if (e === s) { - stack.pop(); - } - } - } - - closeIdx = i; - if (closeIdx === -1) { - arr[arr.length - 1] += ch; - continue; - } - - ch = str.slice(idx, closeIdx + 1); - tok.val = ch; - tok.idx = idx = closeIdx; - } - - if (quotes.indexOf(ch) !== -1) { - closeIdx = getClosingQuote(str, ch, idx + 1); - if (closeIdx === -1) { - arr[arr.length - 1] += ch; - continue; - } - - if (keepQuotes(ch, opts) === true) { - ch = str.slice(idx, closeIdx + 1); - } else { - ch = str.slice(idx + 1, closeIdx); - } - - tok.val = ch; - tok.idx = idx = closeIdx; - } - - if (typeof fn === 'function') { - fn(tok, tokens); - ch = tok.val; - idx = tok.idx; - } - - if (tok.val === sep && tok.split !== false) { - arr.push(''); - continue; - } - - arr[arr.length - 1] += tok.val; - } - - return arr; -}; - -function getClosingQuote(str, ch, i, brackets) { - var idx = str.indexOf(ch, i); - if (str.charAt(idx - 1) === '\\') { - return getClosingQuote(str, ch, idx + 1); - } - return idx; -} - -function keepQuotes(ch, opts) { - if (opts.keepDoubleQuotes === true && ch === '"') return true; - if (opts.keepSingleQuotes === true && ch === "'") return true; - return opts.keepQuotes; -} - -function keepEscaping(opts, str, idx) { - if (typeof opts.keepEscaping === 'function') { - return opts.keepEscaping(str, idx); - } - return opts.keepEscaping === true || str[idx + 1] === '\\'; -} - - -/***/ }), - -/***/ "../../node_modules/split-string/node_modules/extend-shallow/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var isExtendable = __webpack_require__("../../node_modules/split-string/node_modules/is-extendable/index.js"); -var assignSymbols = __webpack_require__("../../node_modules/assign-symbols/index.js"); - -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; - -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} - -function isString(val) { - return (val && typeof val === 'string'); -} - -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} - -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} - -/** - * Returns true if the given `key` is an own property of `obj`. - */ - -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} - -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} - - -/***/ }), - -/***/ "../../node_modules/split-string/node_modules/is-extendable/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ - - - -var isPlainObject = __webpack_require__("../../node_modules/is-plain-object/index.js"); - -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); -}; - - -/***/ }), - -/***/ "../../node_modules/static-extend/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * static-extend - * - * Copyright (c) 2016, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -var copy = __webpack_require__("../../node_modules/object-copy/index.js"); -var define = __webpack_require__("../../node_modules/define-property/index.js"); -var util = __webpack_require__("util"); - -/** - * Returns a function for extending the static properties, - * prototype properties, and descriptors from the `Parent` - * constructor onto `Child` constructors. - * - * ```js - * var extend = require('static-extend'); - * Parent.extend = extend(Parent); - * - * // optionally pass a custom merge function as the second arg - * Parent.extend = extend(Parent, function(Child) { - * Child.prototype.mixin = function(key, val) { - * Child.prototype[key] = val; - * }; - * }); - * - * // extend "child" constructors - * Parent.extend(Child); - * - * // optionally define prototype methods as the second arg - * Parent.extend(Child, { - * foo: function() {}, - * bar: function() {} - * }); - * ``` - * @param {Function} `Parent` Parent ctor - * @param {Function} `extendFn` Optional extend function for handling any necessary custom merging. Useful when updating methods that require a specific prototype. - * @param {Function} `Child` Child ctor - * @param {Object} `proto` Optionally pass additional prototype properties to inherit. - * @return {Object} - * @api public - */ - -function extend(Parent, extendFn) { - if (typeof Parent !== 'function') { - throw new TypeError('expected Parent to be a function.'); - } - - return function(Ctor, proto) { - if (typeof Ctor !== 'function') { - throw new TypeError('expected Ctor to be a function.'); - } - - util.inherits(Ctor, Parent); - copy(Ctor, Parent); - - // proto can be null or a plain object - if (typeof proto === 'object') { - var obj = Object.create(proto); - - for (var k in obj) { - Ctor.prototype[k] = obj[k]; - } - } - - // keep a reference to the parent prototype - define(Ctor.prototype, '_parent_', { - configurable: true, - set: function() {}, - get: function() { - return Parent.prototype; - } - }); - - if (typeof extendFn === 'function') { - extendFn(Ctor, Parent); - } - - Ctor.extend = extend(Ctor, extendFn); - }; -}; - -/** - * Expose `extend` - */ - -module.exports = extend; - - -/***/ }), - -/***/ "../../node_modules/strip-ansi/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const ansiRegex = __webpack_require__("../../node_modules/ansi-regex/index.js"); - -module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string; - - -/***/ }), - -/***/ "../../node_modules/strip-bom/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = string => { - if (typeof string !== 'string') { - throw new TypeError(`Expected a string, got ${typeof string}`); - } - - // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string - // conversion translates it to FEFF (UTF-16 BOM) - if (string.charCodeAt(0) === 0xFEFF) { - return string.slice(1); - } - - return string; -}; - - -/***/ }), - -/***/ "../../node_modules/strip-final-newline/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -module.exports = input => { - const LF = typeof input === 'string' ? '\n' : '\n'.charCodeAt(); - const CR = typeof input === 'string' ? '\r' : '\r'.charCodeAt(); - - if (input[input.length - 1] === LF) { - input = input.slice(0, input.length - 1); - } - - if (input[input.length - 1] === CR) { - input = input.slice(0, input.length - 1); - } - - return input; -}; - - -/***/ }), - -/***/ "../../node_modules/strong-log-transformer/index.js": -/***/ (function(module, exports, __webpack_require__) { - -// Copyright IBM Corp. 2014,2018. All Rights Reserved. -// Node module: strong-log-transformer -// This file is licensed under the Apache License 2.0. -// License text available at https://opensource.org/licenses/Apache-2.0 - -module.exports = __webpack_require__("../../node_modules/strong-log-transformer/lib/logger.js"); -module.exports.cli = __webpack_require__("../../node_modules/strong-log-transformer/lib/cli.js"); - - -/***/ }), - -/***/ "../../node_modules/strong-log-transformer/lib/cli.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright IBM Corp. 2014,2018. All Rights Reserved. -// Node module: strong-log-transformer -// This file is licensed under the Apache License 2.0. -// License text available at https://opensource.org/licenses/Apache-2.0 - - - -var minimist = __webpack_require__("../../node_modules/minimist/index.js"); -var path = __webpack_require__("path"); - -var Logger = __webpack_require__("../../node_modules/strong-log-transformer/lib/logger.js"); -var pkg = __webpack_require__("../../node_modules/strong-log-transformer/package.json"); - -module.exports = cli; - -function cli(args) { - var opts = minimist(args.slice(2)); - var $0 = path.basename(args[1]); - var p = console.log.bind(console); - if (opts.v || opts.version) { - version($0, p); - } else if (opts.h || opts.help) { - usage($0, p); - } else if (args.length < 3) { - process.stdin.pipe(Logger()).pipe(process.stdout); - } else { - process.stdin.pipe(Logger(opts)).pipe(process.stdout); - } -} - -function version($0, p) { - p('%s v%s', pkg.name, pkg.version); -} - -function usage($0, p) { - var PADDING = ' '; - var opt, def; - p('Usage: %s [options]', $0); - p(''); - p('%s', pkg.description); - p(''); - p('OPTIONS:'); - for (opt in Logger.DEFAULTS) { - def = Logger.DEFAULTS[opt]; - if (typeof def === 'boolean') - boolOpt(opt, Logger.DEFAULTS[opt]); - else - stdOpt(opt, Logger.DEFAULTS[opt]); - } - p(''); - - function boolOpt(name, def) { - name = name + PADDING.slice(0, 20-name.length); - p(' --%s default: %s', name, def); - } - - function stdOpt(name, def) { - var value = name.toUpperCase() + - PADDING.slice(0, 19 - name.length*2); - p(' --%s %s default: %j', name, value, def); - } -} - - -/***/ }), - -/***/ "../../node_modules/strong-log-transformer/lib/logger.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -// Copyright IBM Corp. 2014,2018. All Rights Reserved. -// Node module: strong-log-transformer -// This file is licensed under the Apache License 2.0. -// License text available at https://opensource.org/licenses/Apache-2.0 - - - -var stream = __webpack_require__("stream"); -var util = __webpack_require__("util"); -var fs = __webpack_require__("fs"); - -var through = __webpack_require__("../../node_modules/through/index.js"); -var duplexer = __webpack_require__("../../node_modules/duplexer/index.js"); -var StringDecoder = __webpack_require__("string_decoder").StringDecoder; - -module.exports = Logger; - -Logger.DEFAULTS = { - format: 'text', - tag: '', - mergeMultiline: false, - timeStamp: false, -}; - -var formatters = { - text: textFormatter, - json: jsonFormatter, -} - -function Logger(options) { - var defaults = JSON.parse(JSON.stringify(Logger.DEFAULTS)); - options = util._extend(defaults, options || {}); - var catcher = deLiner(); - var emitter = catcher; - var transforms = [ - objectifier(), - ]; - - if (options.tag) { - transforms.push(staticTagger(options.tag)); - } - - if (options.mergeMultiline) { - transforms.push(lineMerger()); - } - - // TODO - // if (options.pidStamp) { - // transforms.push(pidStamper(options.pid)); - // } - - // TODO - // if (options.workerStamp) { - // transforms.push(workerStamper(options.worker)); - // } - - transforms.push(formatters[options.format](options)); - - // restore line endings that were removed by line splitting - transforms.push(reLiner()); - - for (var t in transforms) { - emitter = emitter.pipe(transforms[t]); - } - - return duplexer(catcher, emitter); -} - -function deLiner() { - var decoder = new StringDecoder('utf8'); - var last = ''; - - return new stream.Transform({ - transform(chunk, _enc, callback) { - last += decoder.write(chunk); - var list = last.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g); - last = list.pop(); - for (var i = 0; i < list.length; i++) { - // swallow empty lines - if (list[i]) { - this.push(list[i]); - } - } - callback(); - }, - flush(callback) { - // incomplete UTF8 sequences become UTF8 replacement characters - last += decoder.end(); - if (last) { - this.push(last); - } - callback(); - }, - }); -} - -function reLiner() { - return through(appendNewline); - - function appendNewline(line) { - this.emit('data', line + '\n'); - } -} - -function objectifier() { - return through(objectify, null, {autoDestroy: false}); - - function objectify(line) { - this.emit('data', { - msg: line, - time: Date.now(), - }); - } -} - -function staticTagger(tag) { - return through(tagger); - - function tagger(logEvent) { - logEvent.tag = tag; - this.emit('data', logEvent); - } -} - -function textFormatter(options) { - return through(textify); - - function textify(logEvent) { - var line = util.format('%s%s', textifyTags(logEvent.tag), - logEvent.msg.toString()); - if (options.timeStamp) { - line = util.format('%s %s', new Date(logEvent.time).toISOString(), line); - } - this.emit('data', line.replace(/\n/g, '\\n')); - } - - function textifyTags(tags) { - var str = ''; - if (typeof tags === 'string') { - str = tags + ' '; - } else if (typeof tags === 'object') { - for (var t in tags) { - str += t + ':' + tags[t] + ' '; - } - } - return str; - } -} - -function jsonFormatter(options) { - return through(jsonify); - - function jsonify(logEvent) { - if (options.timeStamp) { - logEvent.time = new Date(logEvent.time).toISOString(); - } else { - delete logEvent.time; - } - logEvent.msg = logEvent.msg.toString(); - this.emit('data', JSON.stringify(logEvent)); - } -} - -function lineMerger(host) { - var previousLine = null; - var flushTimer = null; - var stream = through(lineMergerWrite, lineMergerEnd); - var flush = _flush.bind(stream); - - return stream; - - function lineMergerWrite(line) { - if (/^\s+/.test(line.msg)) { - if (previousLine) { - previousLine.msg += '\n' + line.msg; - } else { - previousLine = line; - } - } else { - flush(); - previousLine = line; - } - // rolling timeout - clearTimeout(flushTimer); - flushTimer = setTimeout(flush.bind(this), 10); - } - - function _flush() { - if (previousLine) { - this.emit('data', previousLine); - previousLine = null; - } - } - - function lineMergerEnd() { - flush.call(this); - this.emit('end'); - } -} - - -/***/ }), - -/***/ "../../node_modules/strong-log-transformer/package.json": -/***/ (function(module) { - -module.exports = JSON.parse("{\"name\":\"strong-log-transformer\",\"version\":\"2.1.0\",\"description\":\"Stream transformer that prefixes lines with timestamps and other things.\",\"author\":\"Ryan Graham \",\"license\":\"Apache-2.0\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/strongloop/strong-log-transformer\"},\"keywords\":[\"logging\",\"streams\"],\"bugs\":{\"url\":\"https://github.com/strongloop/strong-log-transformer/issues\"},\"homepage\":\"https://github.com/strongloop/strong-log-transformer\",\"directories\":{\"test\":\"test\"},\"bin\":{\"sl-log-transformer\":\"bin/sl-log-transformer.js\"},\"main\":\"index.js\",\"scripts\":{\"test\":\"tap --100 test/test-*\"},\"dependencies\":{\"duplexer\":\"^0.1.1\",\"minimist\":\"^1.2.0\",\"through\":\"^2.3.4\"},\"devDependencies\":{\"tap\":\"^12.0.1\"},\"engines\":{\"node\":\">=4\"}}"); - -/***/ }), - -/***/ "../../node_modules/supports-color/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const os = __webpack_require__("os"); -const tty = __webpack_require__("tty"); -const hasFlag = __webpack_require__("../../node_modules/has-flag/index.js"); - -const {env} = process; - -let forceColor; -if (hasFlag('no-color') || - hasFlag('no-colors') || - hasFlag('color=false') || - hasFlag('color=never')) { - forceColor = 0; -} else if (hasFlag('color') || - hasFlag('colors') || - hasFlag('color=true') || - hasFlag('color=always')) { - forceColor = 1; -} - -if ('FORCE_COLOR' in env) { - if (env.FORCE_COLOR === 'true') { - forceColor = 1; - } else if (env.FORCE_COLOR === 'false') { - forceColor = 0; - } else { - forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); - } -} - -function translateLevel(level) { - if (level === 0) { - return false; - } - - return { - level, - hasBasic: true, - has256: level >= 2, - has16m: level >= 3 - }; -} - -function supportsColor(haveStream, streamIsTTY) { - if (forceColor === 0) { - return 0; - } - - if (hasFlag('color=16m') || - hasFlag('color=full') || - hasFlag('color=truecolor')) { - return 3; - } - - if (hasFlag('color=256')) { - return 2; - } - - if (haveStream && !streamIsTTY && forceColor === undefined) { - return 0; - } - - const min = forceColor || 0; - - if (env.TERM === 'dumb') { - return min; - } - - if (process.platform === 'win32') { - // Windows 10 build 10586 is the first Windows release that supports 256 colors. - // Windows 10 build 14931 is the first release that supports 16m/TrueColor. - const osRelease = os.release().split('.'); - if ( - Number(osRelease[0]) >= 10 && - Number(osRelease[2]) >= 10586 - ) { - return Number(osRelease[2]) >= 14931 ? 3 : 2; - } - - return 1; - } - - if ('CI' in env) { - if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { - return 1; - } - - return min; - } - - if ('TEAMCITY_VERSION' in env) { - return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; - } - - if ('GITHUB_ACTIONS' in env) { - return 1; - } - - if (env.COLORTERM === 'truecolor') { - return 3; - } - - if ('TERM_PROGRAM' in env) { - const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); - - switch (env.TERM_PROGRAM) { - case 'iTerm.app': - return version >= 3 ? 3 : 2; - case 'Apple_Terminal': - return 2; - // No default - } - } - - if (/-256(color)?$/i.test(env.TERM)) { - return 2; - } - - if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { - return 1; - } - - if ('COLORTERM' in env) { - return 1; - } - - return min; -} - -function getSupportLevel(stream) { - const level = supportsColor(stream, stream && stream.isTTY); - return translateLevel(level); -} - -module.exports = { - supportsColor: getSupportLevel, - stdout: translateLevel(supportsColor(true, tty.isatty(1))), - stderr: translateLevel(supportsColor(true, tty.isatty(2))) -}; - - -/***/ }), - -/***/ "../../node_modules/through/index.js": -/***/ (function(module, exports, __webpack_require__) { - -var Stream = __webpack_require__("stream") - -// through -// -// a stream that does nothing but re-emit the input. -// useful for aggregating a series of changing but not ending streams into one stream) - -exports = module.exports = through -through.through = through - -//create a readable writable stream. - -function through (write, end, opts) { - write = write || function (data) { this.queue(data) } - end = end || function () { this.queue(null) } - - var ended = false, destroyed = false, buffer = [], _ended = false - var stream = new Stream() - stream.readable = stream.writable = true - stream.paused = false - -// stream.autoPause = !(opts && opts.autoPause === false) - stream.autoDestroy = !(opts && opts.autoDestroy === false) - - stream.write = function (data) { - write.call(this, data) - return !stream.paused - } - - function drain() { - while(buffer.length && !stream.paused) { - var data = buffer.shift() - if(null === data) - return stream.emit('end') - else - stream.emit('data', data) - } - } - - stream.queue = stream.push = function (data) { -// console.error(ended) - if(_ended) return stream - if(data === null) _ended = true - buffer.push(data) - drain() - return stream - } - - //this will be registered as the first 'end' listener - //must call destroy next tick, to make sure we're after any - //stream piped from here. - //this is only a problem if end is not emitted synchronously. - //a nicer way to do this is to make sure this is the last listener for 'end' - - stream.on('end', function () { - stream.readable = false - if(!stream.writable && stream.autoDestroy) - process.nextTick(function () { - stream.destroy() - }) - }) - - function _end () { - stream.writable = false - end.call(stream) - if(!stream.readable && stream.autoDestroy) - stream.destroy() - } - - stream.end = function (data) { - if(ended) return - ended = true - if(arguments.length) stream.write(data) - _end() // will emit or queue - return stream - } - - stream.destroy = function () { - if(destroyed) return - destroyed = true - ended = true - buffer.length = 0 - stream.writable = stream.readable = false - stream.emit('close') - return stream - } +// return the number of states currently on the stack +stateStackSize:function stateStackSize() { + return this.conditionStack.length; + }, +options: {}, +performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) { +var YYSTATE=YY_START; +switch($avoiding_name_collisions) { +case 0:return 5 +break; +case 1:/* skip whitespace */ +break; +case 2:return 8 +break; +case 3:return 16 +break; +case 4:return 17 +break; +case 5:return 11 +break; +case 6:return 10 +break; +case 7:return 9 +break; +case 8:return 14 +break; +case 9:return 15 +break; +case 10:return 12 +break; +case 11:return 7 +break; +case 12:return 7 +break; +case 13:return 7 +break; +case 14:return 7 +break; +case 15:return 7 +break; +case 16:return 7 +break; +case 17:return 7 +break; +case 18:return 7 +break; +case 19:return 7 +break; +case 20:return 7 +break; +case 21:return 7 +break; +case 22:return 7 +break; +case 23:return 7 +break; +case 24:return 13 +break; +case 25:return 13 +break; +case 26:return 13 +break; +case 27:return 13 +break; +case 28:return 13 +break; +case 29:return 13 +break; +case 30:return 13 +break; +case 31:return 13 +break; +case 32:return 7 +break; +case 33:return 13 +break; +case 34:return 7 +break; +case 35:return 13 +break; +case 36:return 7 +break; +case 37:return 13 +break; +case 38:return 13 +break; +case 39:return 7 +break; +case 40:return 13 +break; +case 41:return 13 +break; +case 42:return 13 +break; +case 43:return 13 +break; +case 44:return 13 +break; +case 45:return 7 +break; +case 46:return 13 +break; +case 47:return 7 +break; +case 48:return 7 +break; +case 49:return 7 +break; +case 50:return 7 +break; +case 51:return 7 +break; +case 52:return 7 +break; +case 53:return 7 +break; +case 54:return 7 +break; +case 55:return 7 +break; +case 56:return 7 +break; +case 57:return 7 +break; +case 58:return 7 +break; +case 59:return 7 +break; +case 60:return 7 +break; +case 61:return 7 +break; +case 62:return 7 +break; +case 63:return 13 +break; +case 64:return 7 +break; +case 65:return 7 +break; +case 66:return 13 +break; +case 67:return 7 +break; +case 68:return 7 +break; +case 69:return 7 +break; +case 70:return 7 +break; +case 71:return 7 +break; +case 72:return 7 +break; +case 73:return 13 +break; +case 74:return 7 +break; +case 75:return 13 +break; +case 76:return 7 +break; +case 77:return 7 +break; +case 78:return 7 +break; +case 79:return 7 +break; +case 80:return 7 +break; +case 81:return 7 +break; +case 82:return 7 +break; +case 83:return 7 +break; +case 84:return 7 +break; +case 85:return 7 +break; +case 86:return 7 +break; +case 87:return 7 +break; +case 88:return 7 +break; +case 89:return 7 +break; +case 90:return 7 +break; +case 91:return 7 +break; +case 92:return 7 +break; +case 93:return 7 +break; +case 94:return 7 +break; +case 95:return 7 +break; +case 96:return 7 +break; +case 97:return 7 +break; +case 98:return 7 +break; +case 99:return 7 +break; +case 100:return 7 +break; +case 101:return 7 +break; +case 102:return 7 +break; +case 103:return 7 +break; +case 104:return 7 +break; +case 105:return 7 +break; +case 106:return 7 +break; +case 107:return 7 +break; +case 108:return 7 +break; +case 109:return 7 +break; +case 110:return 7 +break; +case 111:return 7 +break; +case 112:return 7 +break; +case 113:return 7 +break; +case 114:return 7 +break; +case 115:return 7 +break; +case 116:return 7 +break; +case 117:return 7 +break; +case 118:return 7 +break; +case 119:return 7 +break; +case 120:return 7 +break; +case 121:return 7 +break; +case 122:return 7 +break; +case 123:return 7 +break; +case 124:return 7 +break; +case 125:return 7 +break; +case 126:return 7 +break; +case 127:return 7 +break; +case 128:return 7 +break; +case 129:return 7 +break; +case 130:return 7 +break; +case 131:return 7 +break; +case 132:return 7 +break; +case 133:return 7 +break; +case 134:return 7 +break; +case 135:return 7 +break; +case 136:return 7 +break; +case 137:return 7 +break; +case 138:return 7 +break; +case 139:return 7 +break; +case 140:return 7 +break; +case 141:return 7 +break; +case 142:return 7 +break; +case 143:return 7 +break; +case 144:return 7 +break; +case 145:return 7 +break; +case 146:return 7 +break; +case 147:return 7 +break; +case 148:return 7 +break; +case 149:return 7 +break; +case 150:return 7 +break; +case 151:return 7 +break; +case 152:return 7 +break; +case 153:return 7 +break; +case 154:return 7 +break; +case 155:return 7 +break; +case 156:return 7 +break; +case 157:return 7 +break; +case 158:return 7 +break; +case 159:return 7 +break; +case 160:return 7 +break; +case 161:return 7 +break; +case 162:return 7 +break; +case 163:return 7 +break; +case 164:return 7 +break; +case 165:return 7 +break; +case 166:return 7 +break; +case 167:return 7 +break; +case 168:return 7 +break; +case 169:return 7 +break; +case 170:return 7 +break; +case 171:return 7 +break; +case 172:return 7 +break; +case 173:return 7 +break; +case 174:return 7 +break; +case 175:return 7 +break; +case 176:return 7 +break; +case 177:return 7 +break; +case 178:return 7 +break; +case 179:return 7 +break; +case 180:return 7 +break; +case 181:return 7 +break; +case 182:return 7 +break; +case 183:return 7 +break; +case 184:return 7 +break; +case 185:return 7 +break; +case 186:return 7 +break; +case 187:return 7 +break; +case 188:return 7 +break; +case 189:return 7 +break; +case 190:return 7 +break; +case 191:return 7 +break; +case 192:return 7 +break; +case 193:return 7 +break; +case 194:return 7 +break; +case 195:return 7 +break; +case 196:return 7 +break; +case 197:return 7 +break; +case 198:return 7 +break; +case 199:return 7 +break; +case 200:return 7 +break; +case 201:return 7 +break; +case 202:return 7 +break; +case 203:return 7 +break; +case 204:return 7 +break; +case 205:return 7 +break; +case 206:return 7 +break; +case 207:return 7 +break; +case 208:return 7 +break; +case 209:return 7 +break; +case 210:return 7 +break; +case 211:return 7 +break; +case 212:return 7 +break; +case 213:return 7 +break; +case 214:return 7 +break; +case 215:return 7 +break; +case 216:return 7 +break; +case 217:return 7 +break; +case 218:return 7 +break; +case 219:return 7 +break; +case 220:return 7 +break; +case 221:return 7 +break; +case 222:return 7 +break; +case 223:return 7 +break; +case 224:return 7 +break; +case 225:return 7 +break; +case 226:return 7 +break; +case 227:return 7 +break; +case 228:return 7 +break; +case 229:return 7 +break; +case 230:return 7 +break; +case 231:return 7 +break; +case 232:return 7 +break; +case 233:return 7 +break; +case 234:return 7 +break; +case 235:return 7 +break; +case 236:return 7 +break; +case 237:return 7 +break; +case 238:return 7 +break; +case 239:return 7 +break; +case 240:return 7 +break; +case 241:return 7 +break; +case 242:return 7 +break; +case 243:return 7 +break; +case 244:return 7 +break; +case 245:return 7 +break; +case 246:return 7 +break; +case 247:return 7 +break; +case 248:return 7 +break; +case 249:return 7 +break; +case 250:return 7 +break; +case 251:return 7 +break; +case 252:return 7 +break; +case 253:return 7 +break; +case 254:return 7 +break; +case 255:return 7 +break; +case 256:return 7 +break; +case 257:return 7 +break; +case 258:return 7 +break; +case 259:return 7 +break; +case 260:return 7 +break; +case 261:return 7 +break; +case 262:return 7 +break; +case 263:return 7 +break; +case 264:return 7 +break; +case 265:return 7 +break; +case 266:return 7 +break; +case 267:return 7 +break; +case 268:return 7 +break; +case 269:return 7 +break; +case 270:return 7 +break; +case 271:return 7 +break; +case 272:return 7 +break; +case 273:return 7 +break; +case 274:return 7 +break; +case 275:return 7 +break; +case 276:return 7 +break; +case 277:return 7 +break; +case 278:return 7 +break; +case 279:return 7 +break; +case 280:return 7 +break; +case 281:return 7 +break; +case 282:return 7 +break; +case 283:return 7 +break; +case 284:return 7 +break; +case 285:return 7 +break; +case 286:return 7 +break; +case 287:return 7 +break; +case 288:return 7 +break; +case 289:return 7 +break; +case 290:return 7 +break; +case 291:return 7 +break; +case 292:return 7 +break; +case 293:return 7 +break; +case 294:return 7 +break; +case 295:return 7 +break; +case 296:return 7 +break; +case 297:return 7 +break; +case 298:return 7 +break; +case 299:return 7 +break; +case 300:return 7 +break; +case 301:return 7 +break; +case 302:return 7 +break; +case 303:return 7 +break; +case 304:return 7 +break; +case 305:return 7 +break; +case 306:return 7 +break; +case 307:return 7 +break; +case 308:return 7 +break; +case 309:return 7 +break; +case 310:return 7 +break; +case 311:return 7 +break; +case 312:return 7 +break; +case 313:return 7 +break; +case 314:return 7 +break; +case 315:return 7 +break; +case 316:return 7 +break; +case 317:return 7 +break; +case 318:return 7 +break; +case 319:return 7 +break; +case 320:return 7 +break; +case 321:return 7 +break; +case 322:return 7 +break; +case 323:return 7 +break; +case 324:return 7 +break; +case 325:return 7 +break; +case 326:return 7 +break; +case 327:return 7 +break; +case 328:return 7 +break; +case 329:return 7 +break; +case 330:return 7 +break; +case 331:return 7 +break; +case 332:return 7 +break; +case 333:return 7 +break; +case 334:return 7 +break; +case 335:return 7 +break; +case 336:return 7 +break; +case 337:return 7 +break; +case 338:return 7 +break; +case 339:return 7 +break; +case 340:return 7 +break; +case 341:return 7 +break; +case 342:return 7 +break; +case 343:return 7 +break; +case 344:return 7 +break; +case 345:return 7 +break; +case 346:return 7 +break; +case 347:return 7 +break; +case 348:return 7 +break; +case 349:return 7 +break; +case 350:return 7 +break; +case 351:return 7 +break; +case 352:return 7 +break; +case 353:return 7 +break; +case 354:return 7 +break; +case 355:return 7 +break; +case 356:return 7 +break; +case 357:return 7 +break; +case 358:return 7 +break; +case 359:return 7 +break; +case 360:return 7 +break; +case 361:return 7 +break; +case 362:return 7 +break; +case 363:return 7 +break; +case 364:return 7 +break; +} +}, +rules: [/^(?:$)/,/^(?:\s+)/,/^(?:\+)/,/^(?:\()/,/^(?:\))/,/^(?::)/,/^(?:DocumentRef-([0-9A-Za-z-+.]+))/,/^(?:LicenseRef-([0-9A-Za-z-+.]+))/,/^(?:AND)/,/^(?:OR)/,/^(?:WITH)/,/^(?:BSD-3-Clause-No-Nuclear-License-2014)/,/^(?:BSD-3-Clause-No-Nuclear-Warranty)/,/^(?:GPL-2\.0-with-classpath-exception)/,/^(?:GPL-3\.0-with-autoconf-exception)/,/^(?:GPL-2\.0-with-autoconf-exception)/,/^(?:BSD-3-Clause-No-Nuclear-License)/,/^(?:MPL-2\.0-no-copyleft-exception)/,/^(?:GPL-2\.0-with-bison-exception)/,/^(?:GPL-2\.0-with-font-exception)/,/^(?:GPL-2\.0-with-GCC-exception)/,/^(?:CNRI-Python-GPL-Compatible)/,/^(?:GPL-3\.0-with-GCC-exception)/,/^(?:BSD-3-Clause-Attribution)/,/^(?:Classpath-exception-2\.0)/,/^(?:WxWindows-exception-3\.1)/,/^(?:freertos-exception-2\.0)/,/^(?:Autoconf-exception-3\.0)/,/^(?:i2p-gpl-java-exception)/,/^(?:gnu-javamail-exception)/,/^(?:Nokia-Qt-exception-1\.1)/,/^(?:Autoconf-exception-2\.0)/,/^(?:BSD-2-Clause-FreeBSD)/,/^(?:u-boot-exception-2\.0)/,/^(?:zlib-acknowledgement)/,/^(?:Bison-exception-2\.2)/,/^(?:BSD-2-Clause-NetBSD)/,/^(?:CLISP-exception-2\.0)/,/^(?:eCos-exception-2\.0)/,/^(?:BSD-3-Clause-Clear)/,/^(?:Font-exception-2\.0)/,/^(?:FLTK-exception-2\.0)/,/^(?:GCC-exception-2\.0)/,/^(?:Qwt-exception-1\.0)/,/^(?:Libtool-exception)/,/^(?:BSD-3-Clause-LBNL)/,/^(?:GCC-exception-3\.1)/,/^(?:Artistic-1\.0-Perl)/,/^(?:Artistic-1\.0-cl8)/,/^(?:CC-BY-NC-SA-2\.5)/,/^(?:MIT-advertising)/,/^(?:BSD-Source-Code)/,/^(?:CC-BY-NC-SA-4\.0)/,/^(?:LiLiQ-Rplus-1\.1)/,/^(?:CC-BY-NC-SA-3\.0)/,/^(?:BSD-4-Clause-UC)/,/^(?:CC-BY-NC-SA-2\.0)/,/^(?:CC-BY-NC-SA-1\.0)/,/^(?:CC-BY-NC-ND-4\.0)/,/^(?:CC-BY-NC-ND-3\.0)/,/^(?:CC-BY-NC-ND-2\.5)/,/^(?:CC-BY-NC-ND-2\.0)/,/^(?:CC-BY-NC-ND-1\.0)/,/^(?:LZMA-exception)/,/^(?:BitTorrent-1\.1)/,/^(?:CrystalStacker)/,/^(?:FLTK-exception)/,/^(?:SugarCRM-1\.1\.3)/,/^(?:BSD-Protection)/,/^(?:BitTorrent-1\.0)/,/^(?:HaskellReport)/,/^(?:Interbase-1\.0)/,/^(?:StandardML-NJ)/,/^(?:mif-exception)/,/^(?:Frameworx-1\.0)/,/^(?:389-exception)/,/^(?:CC-BY-NC-2\.0)/,/^(?:CC-BY-NC-2\.5)/,/^(?:CC-BY-NC-3\.0)/,/^(?:CC-BY-NC-4\.0)/,/^(?:W3C-19980720)/,/^(?:CC-BY-SA-1\.0)/,/^(?:CC-BY-SA-2\.0)/,/^(?:CC-BY-SA-2\.5)/,/^(?:CC-BY-ND-2\.0)/,/^(?:CC-BY-SA-4\.0)/,/^(?:CC-BY-SA-3\.0)/,/^(?:Artistic-1\.0)/,/^(?:Artistic-2\.0)/,/^(?:CC-BY-ND-2\.5)/,/^(?:CC-BY-ND-3\.0)/,/^(?:CC-BY-ND-4\.0)/,/^(?:CC-BY-ND-1\.0)/,/^(?:BSD-4-Clause)/,/^(?:BSD-3-Clause)/,/^(?:BSD-2-Clause)/,/^(?:CC-BY-NC-1\.0)/,/^(?:bzip2-1\.0\.6)/,/^(?:Unicode-TOU)/,/^(?:CNRI-Jython)/,/^(?:ImageMagick)/,/^(?:Adobe-Glyph)/,/^(?:CUA-OPL-1\.0)/,/^(?:OLDAP-2\.2\.2)/,/^(?:LiLiQ-R-1\.1)/,/^(?:bzip2-1\.0\.5)/,/^(?:LiLiQ-P-1\.1)/,/^(?:OLDAP-2\.0\.1)/,/^(?:OLDAP-2\.2\.1)/,/^(?:CNRI-Python)/,/^(?:XFree86-1\.1)/,/^(?:OSET-PL-2\.1)/,/^(?:Apache-2\.0)/,/^(?:Watcom-1\.0)/,/^(?:PostgreSQL)/,/^(?:Python-2\.0)/,/^(?:RHeCos-1\.1)/,/^(?:EUDatagrid)/,/^(?:Spencer-99)/,/^(?:Intel-ACPI)/,/^(?:CECILL-1\.0)/,/^(?:CECILL-1\.1)/,/^(?:JasPer-2\.0)/,/^(?:CECILL-2\.0)/,/^(?:CECILL-2\.1)/,/^(?:gSOAP-1\.3b)/,/^(?:Spencer-94)/,/^(?:Apache-1\.1)/,/^(?:Spencer-86)/,/^(?:Apache-1\.0)/,/^(?:ClArtistic)/,/^(?:TORQUE-1\.1)/,/^(?:CATOSL-1\.1)/,/^(?:Adobe-2006)/,/^(?:Zimbra-1\.4)/,/^(?:Zimbra-1\.3)/,/^(?:Condor-1\.1)/,/^(?:CC-BY-3\.0)/,/^(?:CC-BY-2\.5)/,/^(?:OLDAP-2\.4)/,/^(?:SGI-B-1\.1)/,/^(?:SISSL-1\.2)/,/^(?:SGI-B-1\.0)/,/^(?:OLDAP-2\.3)/,/^(?:CC-BY-4\.0)/,/^(?:Crossword)/,/^(?:SimPL-2\.0)/,/^(?:OLDAP-2\.2)/,/^(?:OLDAP-2\.1)/,/^(?:ErlPL-1\.1)/,/^(?:LPPL-1\.3a)/,/^(?:LPPL-1\.3c)/,/^(?:OLDAP-2\.0)/,/^(?:Leptonica)/,/^(?:CPOL-1\.02)/,/^(?:OLDAP-1\.4)/,/^(?:OLDAP-1\.3)/,/^(?:CC-BY-2\.0)/,/^(?:Unlicense)/,/^(?:OLDAP-2\.8)/,/^(?:OLDAP-1\.2)/,/^(?:MakeIndex)/,/^(?:OLDAP-2\.7)/,/^(?:OLDAP-1\.1)/,/^(?:Sleepycat)/,/^(?:D-FSL-1\.0)/,/^(?:CC-BY-1\.0)/,/^(?:OLDAP-2\.6)/,/^(?:WXwindows)/,/^(?:NPOSL-3\.0)/,/^(?:FreeImage)/,/^(?:SGI-B-2\.0)/,/^(?:OLDAP-2\.5)/,/^(?:Beerware)/,/^(?:Newsletr)/,/^(?:NBPL-1\.0)/,/^(?:NASA-1\.3)/,/^(?:NLOD-1\.0)/,/^(?:AGPL-1\.0)/,/^(?:OCLC-2\.0)/,/^(?:ODbL-1\.0)/,/^(?:PDDL-1\.0)/,/^(?:Motosoto)/,/^(?:Afmparse)/,/^(?:ANTLR-PD)/,/^(?:LPL-1\.02)/,/^(?:Abstyles)/,/^(?:eCos-2\.0)/,/^(?:APSL-1\.0)/,/^(?:LPPL-1\.2)/,/^(?:LPPL-1\.1)/,/^(?:LPPL-1\.0)/,/^(?:APSL-1\.1)/,/^(?:APSL-2\.0)/,/^(?:Info-ZIP)/,/^(?:Zend-2\.0)/,/^(?:IBM-pibs)/,/^(?:LGPL-2\.0)/,/^(?:LGPL-3\.0)/,/^(?:LGPL-2\.1)/,/^(?:GFDL-1\.3)/,/^(?:PHP-3\.01)/,/^(?:GFDL-1\.2)/,/^(?:GFDL-1\.1)/,/^(?:AGPL-3\.0)/,/^(?:Giftware)/,/^(?:EUPL-1\.1)/,/^(?:RPSL-1\.0)/,/^(?:EUPL-1\.0)/,/^(?:MIT-enna)/,/^(?:CECILL-B)/,/^(?:diffmark)/,/^(?:CECILL-C)/,/^(?:CDDL-1\.0)/,/^(?:Sendmail)/,/^(?:CDDL-1\.1)/,/^(?:CPAL-1\.0)/,/^(?:APSL-1\.2)/,/^(?:NPL-1\.1)/,/^(?:AFL-1\.2)/,/^(?:Caldera)/,/^(?:AFL-2\.0)/,/^(?:FSFULLR)/,/^(?:AFL-2\.1)/,/^(?:VSL-1\.0)/,/^(?:VOSTROM)/,/^(?:UPL-1\.0)/,/^(?:Dotseqn)/,/^(?:CPL-1\.0)/,/^(?:dvipdfm)/,/^(?:EPL-1\.0)/,/^(?:OCCT-PL)/,/^(?:ECL-1\.0)/,/^(?:Latex2e)/,/^(?:ECL-2\.0)/,/^(?:GPL-1\.0)/,/^(?:GPL-2\.0)/,/^(?:GPL-3\.0)/,/^(?:AFL-3\.0)/,/^(?:LAL-1\.2)/,/^(?:LAL-1\.3)/,/^(?:EFL-1\.0)/,/^(?:EFL-2\.0)/,/^(?:gnuplot)/,/^(?:Aladdin)/,/^(?:LPL-1\.0)/,/^(?:libtiff)/,/^(?:Entessa)/,/^(?:AMDPLPA)/,/^(?:IPL-1\.0)/,/^(?:OPL-1\.0)/,/^(?:OSL-1\.0)/,/^(?:OSL-1\.1)/,/^(?:OSL-2\.0)/,/^(?:OSL-2\.1)/,/^(?:OSL-3\.0)/,/^(?:OpenSSL)/,/^(?:ZPL-2\.1)/,/^(?:PHP-3\.0)/,/^(?:ZPL-2\.0)/,/^(?:ZPL-1\.1)/,/^(?:CC0-1\.0)/,/^(?:SPL-1\.0)/,/^(?:psutils)/,/^(?:MPL-1\.0)/,/^(?:QPL-1\.0)/,/^(?:MPL-1\.1)/,/^(?:MPL-2\.0)/,/^(?:APL-1\.0)/,/^(?:RPL-1\.1)/,/^(?:RPL-1\.5)/,/^(?:MIT-CMU)/,/^(?:Multics)/,/^(?:Eurosym)/,/^(?:BSL-1\.0)/,/^(?:MIT-feh)/,/^(?:Saxpath)/,/^(?:Borceux)/,/^(?:OFL-1\.1)/,/^(?:OFL-1\.0)/,/^(?:AFL-1\.1)/,/^(?:YPL-1\.1)/,/^(?:YPL-1\.0)/,/^(?:NPL-1\.0)/,/^(?:iMatix)/,/^(?:mpich2)/,/^(?:APAFML)/,/^(?:Bahyph)/,/^(?:RSA-MD)/,/^(?:psfrag)/,/^(?:Plexus)/,/^(?:eGenix)/,/^(?:Glulxe)/,/^(?:SAX-PD)/,/^(?:Imlib2)/,/^(?:Wsuipa)/,/^(?:LGPLLR)/,/^(?:Libpng)/,/^(?:xinetd)/,/^(?:MITNFA)/,/^(?:NetCDF)/,/^(?:Naumen)/,/^(?:SMPPL)/,/^(?:Nunit)/,/^(?:FSFUL)/,/^(?:GL2PS)/,/^(?:SMLNJ)/,/^(?:Rdisc)/,/^(?:Noweb)/,/^(?:Nokia)/,/^(?:SISSL)/,/^(?:Qhull)/,/^(?:Intel)/,/^(?:Glide)/,/^(?:Xerox)/,/^(?:AMPAS)/,/^(?:WTFPL)/,/^(?:MS-PL)/,/^(?:XSkat)/,/^(?:MS-RL)/,/^(?:MirOS)/,/^(?:RSCPL)/,/^(?:TMate)/,/^(?:OGTSL)/,/^(?:FSFAP)/,/^(?:NCSA)/,/^(?:Zlib)/,/^(?:SCEA)/,/^(?:SNIA)/,/^(?:NGPL)/,/^(?:NOSL)/,/^(?:ADSL)/,/^(?:MTLL)/,/^(?:NLPL)/,/^(?:Ruby)/,/^(?:JSON)/,/^(?:Barr)/,/^(?:0BSD)/,/^(?:Xnet)/,/^(?:Cube)/,/^(?:curl)/,/^(?:DSDP)/,/^(?:Fair)/,/^(?:HPND)/,/^(?:TOSL)/,/^(?:IJG)/,/^(?:SWL)/,/^(?:Vim)/,/^(?:FTL)/,/^(?:ICU)/,/^(?:OML)/,/^(?:NRL)/,/^(?:DOC)/,/^(?:TCL)/,/^(?:W3C)/,/^(?:NTP)/,/^(?:IPA)/,/^(?:ISC)/,/^(?:X11)/,/^(?:AAL)/,/^(?:AML)/,/^(?:xpp)/,/^(?:Zed)/,/^(?:MIT)/,/^(?:Mup)/], +conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364],"inclusive":true}} +}); +return lexer; +})(); +parser.lexer = lexer; +function Parser () { + this.yy = {}; +} +Parser.prototype = parser;parser.Parser = Parser; +return new Parser; +})(); - stream.pause = function () { - if(stream.paused) return - stream.paused = true - return stream - } - stream.resume = function () { - if(stream.paused) { - stream.paused = false - stream.emit('resume') +if (true) { +exports.parser = spdxparse; +exports.Parser = spdxparse.Parser; +exports.parse = function () { return spdxparse.parse.apply(spdxparse, arguments); }; +exports.main = function commonjsMain(args) { + if (!args[1]) { + console.log('Usage: '+args[0]+' FILE'); + process.exit(1); } - drain() - //may have become paused again, - //as drain emits 'data'. - if(!stream.paused) - stream.emit('drain') - return stream - } - return stream + var source = __webpack_require__("fs").readFileSync(__webpack_require__("path").normalize(args[1]), "utf8"); + return exports.parser.parse(source); +}; +if ( true && __webpack_require__.c[__webpack_require__.s] === module) { + exports.main(process.argv.slice(1)); +} } - +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("../../node_modules/webpack/buildin/module.js")(module))) /***/ }), -/***/ "../../node_modules/to-object-path/index.js": -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/*! - * to-object-path - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - - - -var typeOf = __webpack_require__("../../node_modules/to-object-path/node_modules/kind-of/index.js"); - -module.exports = function toPath(args) { - if (typeOf(args) !== 'arguments') { - args = arguments; - } - return filter(args).join('.'); -}; - -function filter(arr) { - var len = arr.length; - var idx = -1; - var res = []; - - while (++idx < len) { - var ele = arr[idx]; - if (typeOf(ele) === 'arguments' || Array.isArray(ele)) { - res.push.apply(res, filter(ele)); - } else if (typeof ele === 'string') { - res.push(ele); - } - } - return res; -} +/***/ "../../node_modules/spdx-license-ids/spdx-license-ids.json": +/***/ (function(module) { +module.exports = JSON.parse("[\"Glide\",\"Abstyles\",\"AFL-1.1\",\"AFL-1.2\",\"AFL-2.0\",\"AFL-2.1\",\"AFL-3.0\",\"AMPAS\",\"APL-1.0\",\"Adobe-Glyph\",\"APAFML\",\"Adobe-2006\",\"AGPL-1.0\",\"Afmparse\",\"Aladdin\",\"ADSL\",\"AMDPLPA\",\"ANTLR-PD\",\"Apache-1.0\",\"Apache-1.1\",\"Apache-2.0\",\"AML\",\"APSL-1.0\",\"APSL-1.1\",\"APSL-1.2\",\"APSL-2.0\",\"Artistic-1.0\",\"Artistic-1.0-Perl\",\"Artistic-1.0-cl8\",\"Artistic-2.0\",\"AAL\",\"Bahyph\",\"Barr\",\"Beerware\",\"BitTorrent-1.0\",\"BitTorrent-1.1\",\"BSL-1.0\",\"Borceux\",\"BSD-2-Clause\",\"BSD-2-Clause-FreeBSD\",\"BSD-2-Clause-NetBSD\",\"BSD-3-Clause\",\"BSD-3-Clause-Clear\",\"BSD-4-Clause\",\"BSD-Protection\",\"BSD-Source-Code\",\"BSD-3-Clause-Attribution\",\"0BSD\",\"BSD-4-Clause-UC\",\"bzip2-1.0.5\",\"bzip2-1.0.6\",\"Caldera\",\"CECILL-1.0\",\"CECILL-1.1\",\"CECILL-2.0\",\"CECILL-2.1\",\"CECILL-B\",\"CECILL-C\",\"ClArtistic\",\"MIT-CMU\",\"CNRI-Jython\",\"CNRI-Python\",\"CNRI-Python-GPL-Compatible\",\"CPOL-1.02\",\"CDDL-1.0\",\"CDDL-1.1\",\"CPAL-1.0\",\"CPL-1.0\",\"CATOSL-1.1\",\"Condor-1.1\",\"CC-BY-1.0\",\"CC-BY-2.0\",\"CC-BY-2.5\",\"CC-BY-3.0\",\"CC-BY-4.0\",\"CC-BY-ND-1.0\",\"CC-BY-ND-2.0\",\"CC-BY-ND-2.5\",\"CC-BY-ND-3.0\",\"CC-BY-ND-4.0\",\"CC-BY-NC-1.0\",\"CC-BY-NC-2.0\",\"CC-BY-NC-2.5\",\"CC-BY-NC-3.0\",\"CC-BY-NC-4.0\",\"CC-BY-NC-ND-1.0\",\"CC-BY-NC-ND-2.0\",\"CC-BY-NC-ND-2.5\",\"CC-BY-NC-ND-3.0\",\"CC-BY-NC-ND-4.0\",\"CC-BY-NC-SA-1.0\",\"CC-BY-NC-SA-2.0\",\"CC-BY-NC-SA-2.5\",\"CC-BY-NC-SA-3.0\",\"CC-BY-NC-SA-4.0\",\"CC-BY-SA-1.0\",\"CC-BY-SA-2.0\",\"CC-BY-SA-2.5\",\"CC-BY-SA-3.0\",\"CC-BY-SA-4.0\",\"CC0-1.0\",\"Crossword\",\"CrystalStacker\",\"CUA-OPL-1.0\",\"Cube\",\"curl\",\"D-FSL-1.0\",\"diffmark\",\"WTFPL\",\"DOC\",\"Dotseqn\",\"DSDP\",\"dvipdfm\",\"EPL-1.0\",\"ECL-1.0\",\"ECL-2.0\",\"eGenix\",\"EFL-1.0\",\"EFL-2.0\",\"MIT-advertising\",\"MIT-enna\",\"Entessa\",\"ErlPL-1.1\",\"EUDatagrid\",\"EUPL-1.0\",\"EUPL-1.1\",\"Eurosym\",\"Fair\",\"MIT-feh\",\"Frameworx-1.0\",\"FreeImage\",\"FTL\",\"FSFAP\",\"FSFUL\",\"FSFULLR\",\"Giftware\",\"GL2PS\",\"Glulxe\",\"AGPL-3.0\",\"GFDL-1.1\",\"GFDL-1.2\",\"GFDL-1.3\",\"GPL-1.0\",\"GPL-2.0\",\"GPL-3.0\",\"LGPL-2.1\",\"LGPL-3.0\",\"LGPL-2.0\",\"gnuplot\",\"gSOAP-1.3b\",\"HaskellReport\",\"HPND\",\"IBM-pibs\",\"IPL-1.0\",\"ICU\",\"ImageMagick\",\"iMatix\",\"Imlib2\",\"IJG\",\"Info-ZIP\",\"Intel-ACPI\",\"Intel\",\"Interbase-1.0\",\"IPA\",\"ISC\",\"JasPer-2.0\",\"JSON\",\"LPPL-1.0\",\"LPPL-1.1\",\"LPPL-1.2\",\"LPPL-1.3a\",\"LPPL-1.3c\",\"Latex2e\",\"BSD-3-Clause-LBNL\",\"Leptonica\",\"LGPLLR\",\"Libpng\",\"libtiff\",\"LAL-1.2\",\"LAL-1.3\",\"LiLiQ-P-1.1\",\"LiLiQ-Rplus-1.1\",\"LiLiQ-R-1.1\",\"LPL-1.02\",\"LPL-1.0\",\"MakeIndex\",\"MTLL\",\"MS-PL\",\"MS-RL\",\"MirOS\",\"MITNFA\",\"MIT\",\"Motosoto\",\"MPL-1.0\",\"MPL-1.1\",\"MPL-2.0\",\"MPL-2.0-no-copyleft-exception\",\"mpich2\",\"Multics\",\"Mup\",\"NASA-1.3\",\"Naumen\",\"NBPL-1.0\",\"NetCDF\",\"NGPL\",\"NOSL\",\"NPL-1.0\",\"NPL-1.1\",\"Newsletr\",\"NLPL\",\"Nokia\",\"NPOSL-3.0\",\"NLOD-1.0\",\"Noweb\",\"NRL\",\"NTP\",\"Nunit\",\"OCLC-2.0\",\"ODbL-1.0\",\"PDDL-1.0\",\"OCCT-PL\",\"OGTSL\",\"OLDAP-2.2.2\",\"OLDAP-1.1\",\"OLDAP-1.2\",\"OLDAP-1.3\",\"OLDAP-1.4\",\"OLDAP-2.0\",\"OLDAP-2.0.1\",\"OLDAP-2.1\",\"OLDAP-2.2\",\"OLDAP-2.2.1\",\"OLDAP-2.3\",\"OLDAP-2.4\",\"OLDAP-2.5\",\"OLDAP-2.6\",\"OLDAP-2.7\",\"OLDAP-2.8\",\"OML\",\"OPL-1.0\",\"OSL-1.0\",\"OSL-1.1\",\"OSL-2.0\",\"OSL-2.1\",\"OSL-3.0\",\"OpenSSL\",\"OSET-PL-2.1\",\"PHP-3.0\",\"PHP-3.01\",\"Plexus\",\"PostgreSQL\",\"psfrag\",\"psutils\",\"Python-2.0\",\"QPL-1.0\",\"Qhull\",\"Rdisc\",\"RPSL-1.0\",\"RPL-1.1\",\"RPL-1.5\",\"RHeCos-1.1\",\"RSCPL\",\"RSA-MD\",\"Ruby\",\"SAX-PD\",\"Saxpath\",\"SCEA\",\"SWL\",\"SMPPL\",\"Sendmail\",\"SGI-B-1.0\",\"SGI-B-1.1\",\"SGI-B-2.0\",\"OFL-1.0\",\"OFL-1.1\",\"SimPL-2.0\",\"Sleepycat\",\"SNIA\",\"Spencer-86\",\"Spencer-94\",\"Spencer-99\",\"SMLNJ\",\"SugarCRM-1.1.3\",\"SISSL\",\"SISSL-1.2\",\"SPL-1.0\",\"Watcom-1.0\",\"TCL\",\"Unlicense\",\"TMate\",\"TORQUE-1.1\",\"TOSL\",\"Unicode-TOU\",\"UPL-1.0\",\"NCSA\",\"Vim\",\"VOSTROM\",\"VSL-1.0\",\"W3C-19980720\",\"W3C\",\"Wsuipa\",\"Xnet\",\"X11\",\"Xerox\",\"XFree86-1.1\",\"xinetd\",\"xpp\",\"XSkat\",\"YPL-1.0\",\"YPL-1.1\",\"Zed\",\"Zend-2.0\",\"Zimbra-1.3\",\"Zimbra-1.4\",\"Zlib\",\"zlib-acknowledgement\",\"ZPL-1.1\",\"ZPL-2.0\",\"ZPL-2.1\",\"BSD-3-Clause-No-Nuclear-License\",\"BSD-3-Clause-No-Nuclear-Warranty\",\"BSD-3-Clause-No-Nuclear-License-2014\",\"eCos-2.0\",\"GPL-2.0-with-autoconf-exception\",\"GPL-2.0-with-bison-exception\",\"GPL-2.0-with-classpath-exception\",\"GPL-2.0-with-font-exception\",\"GPL-2.0-with-GCC-exception\",\"GPL-3.0-with-autoconf-exception\",\"GPL-3.0-with-GCC-exception\",\"StandardML-NJ\",\"WXwindows\"]"); /***/ }), -/***/ "../../node_modules/to-object-path/node_modules/kind-of/index.js": +/***/ "../../node_modules/strip-ansi/index.js": /***/ (function(module, exports, __webpack_require__) { -var isBuffer = __webpack_require__("../../node_modules/is-buffer/index.js"); -var toString = Object.prototype.toString; - -/** - * Get the native `typeof` a value. - * - * @param {*} `val` - * @return {*} Native javascript type - */ +"use strict"; -module.exports = function kindOf(val) { - // primitivies - if (typeof val === 'undefined') { - return 'undefined'; - } - if (val === null) { - return 'null'; - } - if (val === true || val === false || val instanceof Boolean) { - return 'boolean'; - } - if (typeof val === 'string' || val instanceof String) { - return 'string'; - } - if (typeof val === 'number' || val instanceof Number) { - return 'number'; - } +const ansiRegex = __webpack_require__("../../node_modules/ansi-regex/index.js"); - // functions - if (typeof val === 'function' || val instanceof Function) { - return 'function'; - } +module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string; - // array - if (typeof Array.isArray !== 'undefined' && Array.isArray(val)) { - return 'array'; - } - // check for instances of RegExp and Date before calling `toString` - if (val instanceof RegExp) { - return 'regexp'; - } - if (val instanceof Date) { - return 'date'; - } +/***/ }), - // other objects - var type = toString.call(val); +/***/ "../../node_modules/strip-bom/index.js": +/***/ (function(module, exports, __webpack_require__) { - if (type === '[object RegExp]') { - return 'regexp'; - } - if (type === '[object Date]') { - return 'date'; - } - if (type === '[object Arguments]') { - return 'arguments'; - } - if (type === '[object Error]') { - return 'error'; - } +"use strict"; - // buffer - if (isBuffer(val)) { - return 'buffer'; - } - // es6: Map, WeakMap, Set, WeakSet - if (type === '[object Set]') { - return 'set'; - } - if (type === '[object WeakSet]') { - return 'weakset'; - } - if (type === '[object Map]') { - return 'map'; - } - if (type === '[object WeakMap]') { - return 'weakmap'; - } - if (type === '[object Symbol]') { - return 'symbol'; - } +module.exports = string => { + if (typeof string !== 'string') { + throw new TypeError(`Expected a string, got ${typeof string}`); + } - // typed arrays - if (type === '[object Int8Array]') { - return 'int8array'; - } - if (type === '[object Uint8Array]') { - return 'uint8array'; - } - if (type === '[object Uint8ClampedArray]') { - return 'uint8clampedarray'; - } - if (type === '[object Int16Array]') { - return 'int16array'; - } - if (type === '[object Uint16Array]') { - return 'uint16array'; - } - if (type === '[object Int32Array]') { - return 'int32array'; - } - if (type === '[object Uint32Array]') { - return 'uint32array'; - } - if (type === '[object Float32Array]') { - return 'float32array'; - } - if (type === '[object Float64Array]') { - return 'float64array'; - } + // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string + // conversion translates it to FEFF (UTF-16 BOM) + if (string.charCodeAt(0) === 0xFEFF) { + return string.slice(1); + } - // must be a plain object - return 'object'; + return string; }; /***/ }), -/***/ "../../node_modules/to-regex-range/index.js": +/***/ "../../node_modules/strip-final-newline/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -/*! - * to-regex-range - * - * Copyright (c) 2015-present, Jon Schlinkert. - * Released under the MIT License. - */ - - - -const isNumber = __webpack_require__("../../node_modules/to-regex-range/node_modules/is-number/index.js"); - -const toRegexRange = (min, max, options) => { - if (isNumber(min) === false) { - throw new TypeError('toRegexRange: expected the first argument to be a number'); - } - - if (max === void 0 || min === max) { - return String(min); - } - - if (isNumber(max) === false) { - throw new TypeError('toRegexRange: expected the second argument to be a number.'); - } - - let opts = { relaxZeros: true, ...options }; - if (typeof opts.strictZeros === 'boolean') { - opts.relaxZeros = opts.strictZeros === false; - } - - let relax = String(opts.relaxZeros); - let shorthand = String(opts.shorthand); - let capture = String(opts.capture); - let wrap = String(opts.wrap); - let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap; - - if (toRegexRange.cache.hasOwnProperty(cacheKey)) { - return toRegexRange.cache[cacheKey].result; - } - - let a = Math.min(min, max); - let b = Math.max(min, max); - - if (Math.abs(a - b) === 1) { - let result = min + '|' + max; - if (opts.capture) { - return `(${result})`; - } - if (opts.wrap === false) { - return result; - } - return `(?:${result})`; - } - - let isPadded = hasPadding(min) || hasPadding(max); - let state = { min, max, a, b }; - let positives = []; - let negatives = []; - - if (isPadded) { - state.isPadded = isPadded; - state.maxLen = String(state.max).length; - } - if (a < 0) { - let newMin = b < 0 ? Math.abs(b) : 1; - negatives = splitToPatterns(newMin, Math.abs(a), state, opts); - a = state.a = 0; - } - if (b >= 0) { - positives = splitToPatterns(a, b, state, opts); - } +module.exports = input => { + const LF = typeof input === 'string' ? '\n' : '\n'.charCodeAt(); + const CR = typeof input === 'string' ? '\r' : '\r'.charCodeAt(); - state.negatives = negatives; - state.positives = positives; - state.result = collatePatterns(negatives, positives, opts); + if (input[input.length - 1] === LF) { + input = input.slice(0, input.length - 1); + } - if (opts.capture === true) { - state.result = `(${state.result})`; - } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) { - state.result = `(?:${state.result})`; - } + if (input[input.length - 1] === CR) { + input = input.slice(0, input.length - 1); + } - toRegexRange.cache[cacheKey] = state; - return state.result; + return input; }; -function collatePatterns(neg, pos, options) { - let onlyNegative = filterPatterns(neg, pos, '-', false, options) || []; - let onlyPositive = filterPatterns(pos, neg, '', false, options) || []; - let intersected = filterPatterns(neg, pos, '-?', true, options) || []; - let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); - return subpatterns.join('|'); -} -function splitToRanges(min, max) { - let nines = 1; - let zeros = 1; +/***/ }), - let stop = countNines(min, nines); - let stops = new Set([max]); +/***/ "../../node_modules/strong-log-transformer/index.js": +/***/ (function(module, exports, __webpack_require__) { - while (min <= stop && stop <= max) { - stops.add(stop); - nines += 1; - stop = countNines(min, nines); - } +// Copyright IBM Corp. 2014,2018. All Rights Reserved. +// Node module: strong-log-transformer +// This file is licensed under the Apache License 2.0. +// License text available at https://opensource.org/licenses/Apache-2.0 - stop = countZeros(max + 1, zeros) - 1; +module.exports = __webpack_require__("../../node_modules/strong-log-transformer/lib/logger.js"); +module.exports.cli = __webpack_require__("../../node_modules/strong-log-transformer/lib/cli.js"); - while (min < stop && stop <= max) { - stops.add(stop); - zeros += 1; - stop = countZeros(max + 1, zeros) - 1; - } - stops = [...stops]; - stops.sort(compare); - return stops; -} +/***/ }), -/** - * Convert a range to a regex pattern - * @param {Number} `start` - * @param {Number} `stop` - * @return {String} - */ +/***/ "../../node_modules/strong-log-transformer/lib/cli.js": +/***/ (function(module, exports, __webpack_require__) { -function rangeToPattern(start, stop, options) { - if (start === stop) { - return { pattern: start, count: [], digits: 0 }; - } +"use strict"; +// Copyright IBM Corp. 2014,2018. All Rights Reserved. +// Node module: strong-log-transformer +// This file is licensed under the Apache License 2.0. +// License text available at https://opensource.org/licenses/Apache-2.0 - let zipped = zip(start, stop); - let digits = zipped.length; - let pattern = ''; - let count = 0; - for (let i = 0; i < digits; i++) { - let [startDigit, stopDigit] = zipped[i]; - if (startDigit === stopDigit) { - pattern += startDigit; +var minimist = __webpack_require__("../../node_modules/minimist/index.js"); +var path = __webpack_require__("path"); - } else if (startDigit !== '0' || stopDigit !== '9') { - pattern += toCharacterClass(startDigit, stopDigit, options); +var Logger = __webpack_require__("../../node_modules/strong-log-transformer/lib/logger.js"); +var pkg = __webpack_require__("../../node_modules/strong-log-transformer/package.json"); - } else { - count++; - } - } +module.exports = cli; - if (count) { - pattern += options.shorthand === true ? '\\d' : '[0-9]'; +function cli(args) { + var opts = minimist(args.slice(2)); + var $0 = path.basename(args[1]); + var p = console.log.bind(console); + if (opts.v || opts.version) { + version($0, p); + } else if (opts.h || opts.help) { + usage($0, p); + } else if (args.length < 3) { + process.stdin.pipe(Logger()).pipe(process.stdout); + } else { + process.stdin.pipe(Logger(opts)).pipe(process.stdout); } - - return { pattern, count: [count], digits }; } -function splitToPatterns(min, max, tok, options) { - let ranges = splitToRanges(min, max); - let tokens = []; - let start = min; - let prev; - - for (let i = 0; i < ranges.length; i++) { - let max = ranges[i]; - let obj = rangeToPattern(String(start), String(max), options); - let zeros = ''; - - if (!tok.isPadded && prev && prev.pattern === obj.pattern) { - if (prev.count.length > 1) { - prev.count.pop(); - } - - prev.count.push(obj.count[0]); - prev.string = prev.pattern + toQuantifier(prev.count); - start = max + 1; - continue; - } - - if (tok.isPadded) { - zeros = padZeros(max, tok, options); - } - - obj.string = zeros + obj.pattern + toQuantifier(obj.count); - tokens.push(obj); - start = max + 1; - prev = obj; - } - - return tokens; +function version($0, p) { + p('%s v%s', pkg.name, pkg.version); } -function filterPatterns(arr, comparison, prefix, intersection, options) { - let result = []; - - for (let ele of arr) { - let { string } = ele; - - // only push if _both_ are negative... - if (!intersection && !contains(comparison, 'string', string)) { - result.push(prefix + string); - } - - // or _both_ are positive - if (intersection && contains(comparison, 'string', string)) { - result.push(prefix + string); - } +function usage($0, p) { + var PADDING = ' '; + var opt, def; + p('Usage: %s [options]', $0); + p(''); + p('%s', pkg.description); + p(''); + p('OPTIONS:'); + for (opt in Logger.DEFAULTS) { + def = Logger.DEFAULTS[opt]; + if (typeof def === 'boolean') + boolOpt(opt, Logger.DEFAULTS[opt]); + else + stdOpt(opt, Logger.DEFAULTS[opt]); } - return result; -} - -/** - * Zip strings - */ - -function zip(a, b) { - let arr = []; - for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]); - return arr; -} - -function compare(a, b) { - return a > b ? 1 : b > a ? -1 : 0; -} - -function contains(arr, key, val) { - return arr.some(ele => ele[key] === val); -} - -function countNines(min, len) { - return Number(String(min).slice(0, -len) + '9'.repeat(len)); -} - -function countZeros(integer, zeros) { - return integer - (integer % Math.pow(10, zeros)); -} + p(''); -function toQuantifier(digits) { - let [start = 0, stop = ''] = digits; - if (stop || start > 1) { - return `{${start + (stop ? ',' + stop : '')}}`; + function boolOpt(name, def) { + name = name + PADDING.slice(0, 20-name.length); + p(' --%s default: %s', name, def); } - return ''; -} - -function toCharacterClass(a, b, options) { - return `[${a}${(b - a === 1) ? '' : '-'}${b}]`; -} - -function hasPadding(str) { - return /^-?(0+)\d/.test(str); -} -function padZeros(value, tok, options) { - if (!tok.isPadded) { - return value; + function stdOpt(name, def) { + var value = name.toUpperCase() + + PADDING.slice(0, 19 - name.length*2); + p(' --%s %s default: %j', name, value, def); } +} - let diff = Math.abs(tok.maxLen - String(value).length); - let relax = options.relaxZeros !== false; - switch (diff) { - case 0: - return ''; - case 1: - return relax ? '0?' : '0'; - case 2: - return relax ? '0{0,2}' : '00'; - default: { - return relax ? `0{0,${diff}}` : `0{${diff}}`; - } - } -} +/***/ }), -/** - * Cache - */ +/***/ "../../node_modules/strong-log-transformer/lib/logger.js": +/***/ (function(module, exports, __webpack_require__) { -toRegexRange.cache = {}; -toRegexRange.clearCache = () => (toRegexRange.cache = {}); +"use strict"; +// Copyright IBM Corp. 2014,2018. All Rights Reserved. +// Node module: strong-log-transformer +// This file is licensed under the Apache License 2.0. +// License text available at https://opensource.org/licenses/Apache-2.0 -/** - * Expose `toRegexRange` - */ -module.exports = toRegexRange; +var stream = __webpack_require__("stream"); +var util = __webpack_require__("util"); +var fs = __webpack_require__("fs"); -/***/ }), +var through = __webpack_require__("../../node_modules/through/index.js"); +var duplexer = __webpack_require__("../../node_modules/duplexer/index.js"); +var StringDecoder = __webpack_require__("string_decoder").StringDecoder; -/***/ "../../node_modules/to-regex-range/node_modules/is-number/index.js": -/***/ (function(module, exports, __webpack_require__) { +module.exports = Logger; -"use strict"; -/*! - * is-number - * - * Copyright (c) 2014-present, Jon Schlinkert. - * Released under the MIT License. - */ +Logger.DEFAULTS = { + format: 'text', + tag: '', + mergeMultiline: false, + timeStamp: false, +}; +var formatters = { + text: textFormatter, + json: jsonFormatter, +} +function Logger(options) { + var defaults = JSON.parse(JSON.stringify(Logger.DEFAULTS)); + options = util._extend(defaults, options || {}); + var catcher = deLiner(); + var emitter = catcher; + var transforms = [ + objectifier(), + ]; -module.exports = function(num) { - if (typeof num === 'number') { - return num - num === 0; + if (options.tag) { + transforms.push(staticTagger(options.tag)); } - if (typeof num === 'string' && num.trim() !== '') { - return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + + if (options.mergeMultiline) { + transforms.push(lineMerger()); } - return false; -}; + // TODO + // if (options.pidStamp) { + // transforms.push(pidStamper(options.pid)); + // } -/***/ }), + // TODO + // if (options.workerStamp) { + // transforms.push(workerStamper(options.worker)); + // } -/***/ "../../node_modules/to-regex/index.js": -/***/ (function(module, exports, __webpack_require__) { + transforms.push(formatters[options.format](options)); -"use strict"; + // restore line endings that were removed by line splitting + transforms.push(reLiner()); + for (var t in transforms) { + emitter = emitter.pipe(transforms[t]); + } -var safe = __webpack_require__("../../node_modules/safe-regex/index.js"); -var define = __webpack_require__("../../node_modules/to-regex/node_modules/define-property/index.js"); -var extend = __webpack_require__("../../node_modules/to-regex/node_modules/extend-shallow/index.js"); -var not = __webpack_require__("../../node_modules/regex-not/index.js"); -var MAX_LENGTH = 1024 * 64; + return duplexer(catcher, emitter); +} -/** - * Session cache - */ +function deLiner() { + var decoder = new StringDecoder('utf8'); + var last = ''; -var cache = {}; + return new stream.Transform({ + transform(chunk, _enc, callback) { + last += decoder.write(chunk); + var list = last.split(/\r\n|[\n\v\f\r\x85\u2028\u2029]/g); + last = list.pop(); + for (var i = 0; i < list.length; i++) { + // swallow empty lines + if (list[i]) { + this.push(list[i]); + } + } + callback(); + }, + flush(callback) { + // incomplete UTF8 sequences become UTF8 replacement characters + last += decoder.end(); + if (last) { + this.push(last); + } + callback(); + }, + }); +} -/** - * Create a regular expression from the given `pattern` string. - * - * @param {String|RegExp} `pattern` Pattern can be a string or regular expression. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ +function reLiner() { + return through(appendNewline); -module.exports = function(patterns, options) { - if (!Array.isArray(patterns)) { - return makeRe(patterns, options); + function appendNewline(line) { + this.emit('data', line + '\n'); } - return makeRe(patterns.join('|'), options); -}; +} -/** - * Create a regular expression from the given `pattern` string. - * - * @param {String|RegExp} `pattern` Pattern can be a string or regular expression. - * @param {Object} `options` - * @return {RegExp} - * @api public - */ +function objectifier() { + return through(objectify, null, {autoDestroy: false}); -function makeRe(pattern, options) { - if (pattern instanceof RegExp) { - return pattern; + function objectify(line) { + this.emit('data', { + msg: line, + time: Date.now(), + }); } +} - if (typeof pattern !== 'string') { - throw new TypeError('expected a string'); - } +function staticTagger(tag) { + return through(tagger); - if (pattern.length > MAX_LENGTH) { - throw new Error('expected pattern to be less than ' + MAX_LENGTH + ' characters'); + function tagger(logEvent) { + logEvent.tag = tag; + this.emit('data', logEvent); } +} - var key = pattern; - // do this before shallow cloning options, it's a lot faster - if (!options || (options && options.cache !== false)) { - key = createKey(pattern, options); +function textFormatter(options) { + return through(textify); - if (cache.hasOwnProperty(key)) { - return cache[key]; + function textify(logEvent) { + var line = util.format('%s%s', textifyTags(logEvent.tag), + logEvent.msg.toString()); + if (options.timeStamp) { + line = util.format('%s %s', new Date(logEvent.time).toISOString(), line); } + this.emit('data', line.replace(/\n/g, '\\n')); } - var opts = extend({}, options); - if (opts.contains === true) { - if (opts.negate === true) { - opts.strictNegate = false; - } else { - opts.strict = false; + function textifyTags(tags) { + var str = ''; + if (typeof tags === 'string') { + str = tags + ' '; + } else if (typeof tags === 'object') { + for (var t in tags) { + str += t + ':' + tags[t] + ' '; + } } + return str; } +} - if (opts.strict === false) { - opts.strictOpen = false; - opts.strictClose = false; - } - - var open = opts.strictOpen !== false ? '^' : ''; - var close = opts.strictClose !== false ? '$' : ''; - var flags = opts.flags || ''; - var regex; - - if (opts.nocase === true && !/i/.test(flags)) { - flags += 'i'; - } +function jsonFormatter(options) { + return through(jsonify); - try { - if (opts.negate || typeof opts.strictNegate === 'boolean') { - pattern = not.create(pattern, opts); + function jsonify(logEvent) { + if (options.timeStamp) { + logEvent.time = new Date(logEvent.time).toISOString(); + } else { + delete logEvent.time; } + logEvent.msg = logEvent.msg.toString(); + this.emit('data', JSON.stringify(logEvent)); + } +} - var str = open + '(?:' + pattern + ')' + close; - regex = new RegExp(str, flags); +function lineMerger(host) { + var previousLine = null; + var flushTimer = null; + var stream = through(lineMergerWrite, lineMergerEnd); + var flush = _flush.bind(stream); - if (opts.safe === true && safe(regex) === false) { - throw new Error('potentially unsafe regular expression: ' + regex.source); - } + return stream; - } catch (err) { - if (opts.strictErrors === true || opts.safe === true) { - err.key = key; - err.pattern = pattern; - err.originalOptions = options; - err.createdOptions = opts; - throw err; + function lineMergerWrite(line) { + if (/^\s+/.test(line.msg)) { + if (previousLine) { + previousLine.msg += '\n' + line.msg; + } else { + previousLine = line; + } + } else { + flush(); + previousLine = line; } + // rolling timeout + clearTimeout(flushTimer); + flushTimer = setTimeout(flush.bind(this), 10); + } - try { - regex = new RegExp('^' + pattern.replace(/(\W)/g, '\\$1') + '$'); - } catch (err) { - regex = /.^/; //<= match nothing + function _flush() { + if (previousLine) { + this.emit('data', previousLine); + previousLine = null; } } - if (opts.cache !== false) { - memoize(regex, key, pattern, opts); + function lineMergerEnd() { + flush.call(this); + this.emit('end'); } - return regex; -} - -/** - * Memoize generated regex. This can result in dramatic speed improvements - * and simplify debugging by adding options and pattern to the regex. It can be - * disabled by passing setting `options.cache` to false. - */ - -function memoize(regex, key, pattern, options) { - define(regex, 'cached', true); - define(regex, 'pattern', pattern); - define(regex, 'options', options); - define(regex, 'key', key); - cache[key] = regex; } -/** - * Create the key to use for memoization. The key is generated - * by iterating over the options and concatenating key-value pairs - * to the pattern string. - */ - -function createKey(pattern, options) { - if (!options) return pattern; - var key = pattern; - for (var prop in options) { - if (options.hasOwnProperty(prop)) { - key += ';' + prop + '=' + String(options[prop]); - } - } - return key; -} -/** - * Expose `makeRe` - */ +/***/ }), -module.exports.makeRe = makeRe; +/***/ "../../node_modules/strong-log-transformer/package.json": +/***/ (function(module) { +module.exports = JSON.parse("{\"name\":\"strong-log-transformer\",\"version\":\"2.1.0\",\"description\":\"Stream transformer that prefixes lines with timestamps and other things.\",\"author\":\"Ryan Graham \",\"license\":\"Apache-2.0\",\"repository\":{\"type\":\"git\",\"url\":\"git://github.com/strongloop/strong-log-transformer\"},\"keywords\":[\"logging\",\"streams\"],\"bugs\":{\"url\":\"https://github.com/strongloop/strong-log-transformer/issues\"},\"homepage\":\"https://github.com/strongloop/strong-log-transformer\",\"directories\":{\"test\":\"test\"},\"bin\":{\"sl-log-transformer\":\"bin/sl-log-transformer.js\"},\"main\":\"index.js\",\"scripts\":{\"test\":\"tap --100 test/test-*\"},\"dependencies\":{\"duplexer\":\"^0.1.1\",\"minimist\":\"^1.2.0\",\"through\":\"^2.3.4\"},\"devDependencies\":{\"tap\":\"^12.0.1\"},\"engines\":{\"node\":\">=4\"}}"); /***/ }), -/***/ "../../node_modules/to-regex/node_modules/define-property/index.js": +/***/ "../../node_modules/supports-color/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; -/*! - * define-property - * - * Copyright (c) 2015-2018, Jon Schlinkert. - * Released under the MIT License. - */ +const os = __webpack_require__("os"); +const tty = __webpack_require__("tty"); +const hasFlag = __webpack_require__("../../node_modules/has-flag/index.js"); +const {env} = process; -var isobject = __webpack_require__("../../node_modules/isobject/index.js"); -var isDescriptor = __webpack_require__("../../node_modules/is-descriptor/index.js"); -var define = (typeof Reflect !== 'undefined' && Reflect.defineProperty) - ? Reflect.defineProperty - : Object.defineProperty; - -module.exports = function defineProperty(obj, key, val) { - if (!isobject(obj) && typeof obj !== 'function' && !Array.isArray(obj)) { - throw new TypeError('expected an object, function, or array'); - } - - if (typeof key !== 'string') { - throw new TypeError('expected "key" to be a string'); - } - - if (isDescriptor(val)) { - define(obj, key, val); - return obj; - } +let forceColor; +if (hasFlag('no-color') || + hasFlag('no-colors') || + hasFlag('color=false') || + hasFlag('color=never')) { + forceColor = 0; +} else if (hasFlag('color') || + hasFlag('colors') || + hasFlag('color=true') || + hasFlag('color=always')) { + forceColor = 1; +} - define(obj, key, { - configurable: true, - enumerable: false, - writable: true, - value: val - }); +if ('FORCE_COLOR' in env) { + if (env.FORCE_COLOR === 'true') { + forceColor = 1; + } else if (env.FORCE_COLOR === 'false') { + forceColor = 0; + } else { + forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); + } +} - return obj; -}; +function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; +} -/***/ }), +function supportsColor(haveStream, streamIsTTY) { + if (forceColor === 0) { + return 0; + } -/***/ "../../node_modules/to-regex/node_modules/extend-shallow/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (hasFlag('color=16m') || + hasFlag('color=full') || + hasFlag('color=truecolor')) { + return 3; + } -"use strict"; + if (hasFlag('color=256')) { + return 2; + } + if (haveStream && !streamIsTTY && forceColor === undefined) { + return 0; + } -var isExtendable = __webpack_require__("../../node_modules/to-regex/node_modules/is-extendable/index.js"); -var assignSymbols = __webpack_require__("../../node_modules/assign-symbols/index.js"); + const min = forceColor || 0; -module.exports = Object.assign || function(obj/*, objects*/) { - if (obj === null || typeof obj === 'undefined') { - throw new TypeError('Cannot convert undefined or null to object'); - } - if (!isObject(obj)) { - obj = {}; - } - for (var i = 1; i < arguments.length; i++) { - var val = arguments[i]; - if (isString(val)) { - val = toObject(val); - } - if (isObject(val)) { - assign(obj, val); - assignSymbols(obj, val); - } - } - return obj; -}; + if (env.TERM === 'dumb') { + return min; + } -function assign(a, b) { - for (var key in b) { - if (hasOwn(b, key)) { - a[key] = b[key]; - } - } -} + if (process.platform === 'win32') { + // Windows 10 build 10586 is the first Windows release that supports 256 colors. + // Windows 10 build 14931 is the first release that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(osRelease[0]) >= 10 && + Number(osRelease[2]) >= 10586 + ) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } -function isString(val) { - return (val && typeof val === 'string'); -} + return 1; + } -function toObject(str) { - var obj = {}; - for (var i in str) { - obj[i] = str[i]; - } - return obj; -} + if ('CI' in env) { + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } -function isObject(val) { - return (val && typeof val === 'object') || isExtendable(val); -} + return min; + } -/** - * Returns true if the given `key` is an own property of `obj`. - */ + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } -function hasOwn(obj, key) { - return Object.prototype.hasOwnProperty.call(obj, key); -} + if ('GITHUB_ACTIONS' in env) { + return 1; + } -function isEnum(obj, key) { - return Object.prototype.propertyIsEnumerable.call(obj, key); -} + if (env.COLORTERM === 'truecolor') { + return 3; + } + if ('TERM_PROGRAM' in env) { + const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); -/***/ }), + switch (env.TERM_PROGRAM) { + case 'iTerm.app': + return version >= 3 ? 3 : 2; + case 'Apple_Terminal': + return 2; + // No default + } + } -/***/ "../../node_modules/to-regex/node_modules/is-extendable/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } -"use strict"; -/*! - * is-extendable - * - * Copyright (c) 2015-2017, Jon Schlinkert. - * Released under the MIT License. - */ + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ('COLORTERM' in env) { + return 1; + } + return min; +} -var isPlainObject = __webpack_require__("../../node_modules/is-plain-object/index.js"); +function getSupportLevel(stream) { + const level = supportsColor(stream, stream && stream.isTTY); + return translateLevel(level); +} -module.exports = function isExtendable(val) { - return isPlainObject(val) || typeof val === 'function' || Array.isArray(val); +module.exports = { + supportsColor: getSupportLevel, + stdout: translateLevel(supportsColor(true, tty.isatty(1))), + stderr: translateLevel(supportsColor(true, tty.isatty(2))) }; /***/ }), -/***/ "../../node_modules/union-value/index.js": +/***/ "../../node_modules/through/index.js": /***/ (function(module, exports, __webpack_require__) { -"use strict"; - - -var isObject = __webpack_require__("../../node_modules/is-extendable/index.js"); -var union = __webpack_require__("../../node_modules/arr-union/index.js"); -var get = __webpack_require__("../../node_modules/get-value/index.js"); -var set = __webpack_require__("../../node_modules/union-value/node_modules/set-value/index.js"); +var Stream = __webpack_require__("stream") -module.exports = function unionValue(obj, prop, value) { - if (!isObject(obj)) { - throw new TypeError('union-value expects the first argument to be an object.'); - } +// through +// +// a stream that does nothing but re-emit the input. +// useful for aggregating a series of changing but not ending streams into one stream) - if (typeof prop !== 'string') { - throw new TypeError('union-value expects `prop` to be a string.'); - } +exports = module.exports = through +through.through = through - var arr = arrayify(get(obj, prop)); - set(obj, prop, union(arr, arrayify(value))); - return obj; -}; +//create a readable writable stream. -function arrayify(val) { - if (val === null || typeof val === 'undefined') { - return []; - } - if (Array.isArray(val)) { - return val; - } - return [val]; -} +function through (write, end, opts) { + write = write || function (data) { this.queue(data) } + end = end || function () { this.queue(null) } + var ended = false, destroyed = false, buffer = [], _ended = false + var stream = new Stream() + stream.readable = stream.writable = true + stream.paused = false -/***/ }), +// stream.autoPause = !(opts && opts.autoPause === false) + stream.autoDestroy = !(opts && opts.autoDestroy === false) -/***/ "../../node_modules/union-value/node_modules/set-value/index.js": -/***/ (function(module, exports, __webpack_require__) { + stream.write = function (data) { + write.call(this, data) + return !stream.paused + } -"use strict"; -/*! - * set-value - * - * Copyright (c) 2014-2015, 2017, Jon Schlinkert. - * Released under the MIT License. - */ + function drain() { + while(buffer.length && !stream.paused) { + var data = buffer.shift() + if(null === data) + return stream.emit('end') + else + stream.emit('data', data) + } + } + stream.queue = stream.push = function (data) { +// console.error(ended) + if(_ended) return stream + if(data === null) _ended = true + buffer.push(data) + drain() + return stream + } + //this will be registered as the first 'end' listener + //must call destroy next tick, to make sure we're after any + //stream piped from here. + //this is only a problem if end is not emitted synchronously. + //a nicer way to do this is to make sure this is the last listener for 'end' -var split = __webpack_require__("../../node_modules/split-string/index.js"); -var extend = __webpack_require__("../../node_modules/extend-shallow/index.js"); -var isPlainObject = __webpack_require__("../../node_modules/is-plain-object/index.js"); -var isObject = __webpack_require__("../../node_modules/is-extendable/index.js"); + stream.on('end', function () { + stream.readable = false + if(!stream.writable && stream.autoDestroy) + process.nextTick(function () { + stream.destroy() + }) + }) -module.exports = function(obj, prop, val) { - if (!isObject(obj)) { - return obj; + function _end () { + stream.writable = false + end.call(stream) + if(!stream.readable && stream.autoDestroy) + stream.destroy() } - if (Array.isArray(prop)) { - prop = [].concat.apply([], prop).join('.'); + stream.end = function (data) { + if(ended) return + ended = true + if(arguments.length) stream.write(data) + _end() // will emit or queue + return stream } - if (typeof prop !== 'string') { - return obj; + stream.destroy = function () { + if(destroyed) return + destroyed = true + ended = true + buffer.length = 0 + stream.writable = stream.readable = false + stream.emit('close') + return stream } - var keys = split(prop, {sep: '.', brackets: true}).filter(isValidKey); - var len = keys.length; - var idx = -1; - var current = obj; - - while (++idx < len) { - var key = keys[idx]; - if (idx !== len - 1) { - if (!isObject(current[key])) { - current[key] = {}; - } - current = current[key]; - continue; - } + stream.pause = function () { + if(stream.paused) return + stream.paused = true + return stream + } - if (isPlainObject(current[key]) && isPlainObject(val)) { - current[key] = extend({}, current[key], val); - } else { - current[key] = val; + stream.resume = function () { + if(stream.paused) { + stream.paused = false + stream.emit('resume') } + drain() + //may have become paused again, + //as drain emits 'data'. + if(!stream.paused) + stream.emit('drain') + return stream } - - return obj; -}; - -function isValidKey(key) { - return key !== '__proto__' && key !== 'constructor' && key !== 'prototype'; + return stream } + /***/ }), -/***/ "../../node_modules/unset-value/index.js": +/***/ "../../node_modules/to-regex-range/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; /*! - * unset-value + * to-regex-range * - * Copyright (c) 2015, 2017, Jon Schlinkert. + * Copyright (c) 2015-present, Jon Schlinkert. * Released under the MIT License. */ -var isObject = __webpack_require__("../../node_modules/isobject/index.js"); -var has = __webpack_require__("../../node_modules/unset-value/node_modules/has-value/index.js"); +const isNumber = __webpack_require__("../../node_modules/to-regex-range/node_modules/is-number/index.js"); -module.exports = function unset(obj, prop) { - if (!isObject(obj)) { - throw new TypeError('expected an object.'); +const toRegexRange = (min, max, options) => { + if (isNumber(min) === false) { + throw new TypeError('toRegexRange: expected the first argument to be a number'); } - if (obj.hasOwnProperty(prop)) { - delete obj[prop]; - return true; + + if (max === void 0 || min === max) { + return String(min); } - if (has(obj, prop)) { - var segs = prop.split('.'); - var last = segs.pop(); - while (segs.length && segs[segs.length - 1].slice(-1) === '\\') { - last = segs.pop().slice(0, -1) + '.' + last; - } - while (segs.length) obj = obj[prop = segs.shift()]; - return (delete obj[last]); + if (isNumber(max) === false) { + throw new TypeError('toRegexRange: expected the second argument to be a number.'); } - return true; -}; + let opts = { relaxZeros: true, ...options }; + if (typeof opts.strictZeros === 'boolean') { + opts.relaxZeros = opts.strictZeros === false; + } -/***/ }), + let relax = String(opts.relaxZeros); + let shorthand = String(opts.shorthand); + let capture = String(opts.capture); + let wrap = String(opts.wrap); + let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap; -/***/ "../../node_modules/unset-value/node_modules/has-value/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (toRegexRange.cache.hasOwnProperty(cacheKey)) { + return toRegexRange.cache[cacheKey].result; + } -"use strict"; -/*! - * has-value - * - * Copyright (c) 2014-2016, Jon Schlinkert. - * Licensed under the MIT License. - */ + let a = Math.min(min, max); + let b = Math.max(min, max); + if (Math.abs(a - b) === 1) { + let result = min + '|' + max; + if (opts.capture) { + return `(${result})`; + } + if (opts.wrap === false) { + return result; + } + return `(?:${result})`; + } + let isPadded = hasPadding(min) || hasPadding(max); + let state = { min, max, a, b }; + let positives = []; + let negatives = []; -var isObject = __webpack_require__("../../node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js"); -var hasValues = __webpack_require__("../../node_modules/unset-value/node_modules/has-values/index.js"); -var get = __webpack_require__("../../node_modules/get-value/index.js"); + if (isPadded) { + state.isPadded = isPadded; + state.maxLen = String(state.max).length; + } -module.exports = function(obj, prop, noZero) { - if (isObject(obj)) { - return hasValues(get(obj, prop), noZero); + if (a < 0) { + let newMin = b < 0 ? Math.abs(b) : 1; + negatives = splitToPatterns(newMin, Math.abs(a), state, opts); + a = state.a = 0; } - return hasValues(obj, prop); -}; + if (b >= 0) { + positives = splitToPatterns(a, b, state, opts); + } -/***/ }), + state.negatives = negatives; + state.positives = positives; + state.result = collatePatterns(negatives, positives, opts); -/***/ "../../node_modules/unset-value/node_modules/has-value/node_modules/isobject/index.js": -/***/ (function(module, exports, __webpack_require__) { + if (opts.capture === true) { + state.result = `(${state.result})`; + } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) { + state.result = `(?:${state.result})`; + } -"use strict"; -/*! - * isobject - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. - */ + toRegexRange.cache[cacheKey] = state; + return state.result; +}; +function collatePatterns(neg, pos, options) { + let onlyNegative = filterPatterns(neg, pos, '-', false, options) || []; + let onlyPositive = filterPatterns(pos, neg, '', false, options) || []; + let intersected = filterPatterns(neg, pos, '-?', true, options) || []; + let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); + return subpatterns.join('|'); +} +function splitToRanges(min, max) { + let nines = 1; + let zeros = 1; -var isArray = __webpack_require__("../../node_modules/unset-value/node_modules/isarray/index.js"); + let stop = countNines(min, nines); + let stops = new Set([max]); -module.exports = function isObject(val) { - return val != null && typeof val === 'object' && isArray(val) === false; -}; + while (min <= stop && stop <= max) { + stops.add(stop); + nines += 1; + stop = countNines(min, nines); + } + stop = countZeros(max + 1, zeros) - 1; -/***/ }), + while (min < stop && stop <= max) { + stops.add(stop); + zeros += 1; + stop = countZeros(max + 1, zeros) - 1; + } -/***/ "../../node_modules/unset-value/node_modules/has-values/index.js": -/***/ (function(module, exports, __webpack_require__) { + stops = [...stops]; + stops.sort(compare); + return stops; +} -"use strict"; -/*! - * has-values - * - * Copyright (c) 2014-2015, Jon Schlinkert. - * Licensed under the MIT License. +/** + * Convert a range to a regex pattern + * @param {Number} `start` + * @param {Number} `stop` + * @return {String} */ +function rangeToPattern(start, stop, options) { + if (start === stop) { + return { pattern: start, count: [], digits: 0 }; + } + let zipped = zip(start, stop); + let digits = zipped.length; + let pattern = ''; + let count = 0; -module.exports = function hasValue(o, noZero) { - if (o === null || o === undefined) { - return false; - } + for (let i = 0; i < digits; i++) { + let [startDigit, stopDigit] = zipped[i]; - if (typeof o === 'boolean') { - return true; - } + if (startDigit === stopDigit) { + pattern += startDigit; - if (typeof o === 'number') { - if (o === 0 && noZero === true) { - return false; - } - return true; - } + } else if (startDigit !== '0' || stopDigit !== '9') { + pattern += toCharacterClass(startDigit, stopDigit, options); - if (o.length !== undefined) { - return o.length !== 0; + } else { + count++; + } } - for (var key in o) { - if (o.hasOwnProperty(key)) { - return true; - } + if (count) { + pattern += options.shorthand === true ? '\\d' : '[0-9]'; } - return false; -}; + return { pattern, count: [count], digits }; +} -/***/ }), +function splitToPatterns(min, max, tok, options) { + let ranges = splitToRanges(min, max); + let tokens = []; + let start = min; + let prev; -/***/ "../../node_modules/unset-value/node_modules/isarray/index.js": -/***/ (function(module, exports) { + for (let i = 0; i < ranges.length; i++) { + let max = ranges[i]; + let obj = rangeToPattern(String(start), String(max), options); + let zeros = ''; -var toString = {}.toString; + if (!tok.isPadded && prev && prev.pattern === obj.pattern) { + if (prev.count.length > 1) { + prev.count.pop(); + } -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; + prev.count.push(obj.count[0]); + prev.string = prev.pattern + toQuantifier(prev.count); + start = max + 1; + continue; + } + if (tok.isPadded) { + zeros = padZeros(max, tok, options); + } -/***/ }), + obj.string = zeros + obj.pattern + toQuantifier(obj.count); + tokens.push(obj); + start = max + 1; + prev = obj; + } -/***/ "../../node_modules/urix/index.js": -/***/ (function(module, exports, __webpack_require__) { + return tokens; +} -// Copyright 2014 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) - -var path = __webpack_require__("path") - -"use strict" - -function urix(aPath) { - if (path.sep === "\\") { - return aPath - .replace(/\\/g, "/") - .replace(/^[a-z]:\/?/i, "/") - } - return aPath -} - -module.exports = urix +function filterPatterns(arr, comparison, prefix, intersection, options) { + let result = []; + for (let ele of arr) { + let { string } = ele; -/***/ }), + // only push if _both_ are negative... + if (!intersection && !contains(comparison, 'string', string)) { + result.push(prefix + string); + } -/***/ "../../node_modules/use/index.js": -/***/ (function(module, exports, __webpack_require__) { + // or _both_ are positive + if (intersection && contains(comparison, 'string', string)) { + result.push(prefix + string); + } + } + return result; +} -"use strict"; -/*! - * use - * - * Copyright (c) 2015, 2017, Jon Schlinkert. - * Released under the MIT License. +/** + * Zip strings */ +function zip(a, b) { + let arr = []; + for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]); + return arr; +} +function compare(a, b) { + return a > b ? 1 : b > a ? -1 : 0; +} -var utils = __webpack_require__("../../node_modules/use/utils.js"); +function contains(arr, key, val) { + return arr.some(ele => ele[key] === val); +} -module.exports = function base(app, opts) { - if (!utils.isObject(app) && typeof app !== 'function') { - throw new TypeError('use: expect `app` be an object or function'); - } +function countNines(min, len) { + return Number(String(min).slice(0, -len) + '9'.repeat(len)); +} - if (!utils.isObject(opts)) { - opts = {}; - } +function countZeros(integer, zeros) { + return integer - (integer % Math.pow(10, zeros)); +} - var prop = utils.isString(opts.prop) ? opts.prop : 'fns'; - if (!Array.isArray(app[prop])) { - utils.define(app, prop, []); +function toQuantifier(digits) { + let [start = 0, stop = ''] = digits; + if (stop || start > 1) { + return `{${start + (stop ? ',' + stop : '')}}`; } + return ''; +} - /** - * Define a plugin function to be passed to use. The only - * parameter exposed to the plugin is `app`, the object or function. - * passed to `use(app)`. `app` is also exposed as `this` in plugins. - * - * Additionally, **if a plugin returns a function, the function will - * be pushed onto the `fns` array**, allowing the plugin to be - * called at a later point by the `run` method. - * - * ```js - * var use = require('use'); - * - * // define a plugin - * function foo(app) { - * // do stuff - * } - * - * var app = function(){}; - * use(app); - * - * // register plugins - * app.use(foo); - * app.use(bar); - * app.use(baz); - * ``` - * @name .use - * @param {Function} `fn` plugin function to call - * @api public - */ - - utils.define(app, 'use', use); - - /** - * Run all plugins on `fns`. Any plugin that returns a function - * when called by `use` is pushed onto the `fns` array. - * - * ```js - * var config = {}; - * app.run(config); - * ``` - * @name .run - * @param {Object} `value` Object to be modified by plugins. - * @return {Object} Returns the object passed to `run` - * @api public - */ - - utils.define(app, 'run', function(val) { - if (!utils.isObject(val)) return; - decorate(val); - - var self = this || app; - var fns = self[prop]; - var len = fns.length; - var idx = -1; - - while (++idx < len) { - val.use(fns[idx]); - } - return val; - }); +function toCharacterClass(a, b, options) { + return `[${a}${(b - a === 1) ? '' : '-'}${b}]`; +} - /** - * Call plugin `fn`. If a function is returned push it into the - * `fns` array to be called by the `run` method. - */ +function hasPadding(str) { + return /^-?(0+)\d/.test(str); +} - function use(fn, options) { - if (typeof fn !== 'function') { - throw new TypeError('.use expects `fn` be a function'); - } +function padZeros(value, tok, options) { + if (!tok.isPadded) { + return value; + } - var self = this || app; - if (typeof opts.fn === 'function') { - opts.fn.call(self, self, options); - } + let diff = Math.abs(tok.maxLen - String(value).length); + let relax = options.relaxZeros !== false; - var plugin = fn.call(self, self); - if (typeof plugin === 'function') { - var fns = self[prop]; - fns.push(plugin); + switch (diff) { + case 0: + return ''; + case 1: + return relax ? '0?' : '0'; + case 2: + return relax ? '0{0,2}' : '00'; + default: { + return relax ? `0{0,${diff}}` : `0{${diff}}`; } - return self; } +} - /** - * Ensure the `.use` method exists on `val` - */ +/** + * Cache + */ - function decorate(val) { - if (!val.use || !val.run) { - base(val); - } - } +toRegexRange.cache = {}; +toRegexRange.clearCache = () => (toRegexRange.cache = {}); - return app; -}; +/** + * Expose `toRegexRange` + */ + +module.exports = toRegexRange; /***/ }), -/***/ "../../node_modules/use/utils.js": +/***/ "../../node_modules/to-regex-range/node_modules/is-number/index.js": /***/ (function(module, exports, __webpack_require__) { "use strict"; - - -var utils = {}; - - - -/** - * Lazily required module dependencies +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. */ -utils.define = __webpack_require__("../../node_modules/define-property/index.js"); -utils.isObject = __webpack_require__("../../node_modules/isobject/index.js"); -utils.isString = function(val) { - return val && typeof val === 'string'; +module.exports = function(num) { + if (typeof num === 'number') { + return num - num === 0; + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; }; -/** - * Expose `utils` modules - */ - -module.exports = utils; - /***/ }), @@ -86238,10 +59571,11 @@ async function run(argv) { /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/@kbn/ci-stats-reporter/target_node/index.js"); /* harmony import */ var _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/log.ts"); -/* harmony import */ var _utils_child_process__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/utils/child_process.ts"); -/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/link_project_executables.ts"); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/projects.ts"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/@kbn/bazel-runner/target_node/index.js"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_2__); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/utils/log.ts"); +/* harmony import */ var _utils_child_process__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/child_process.ts"); +/* harmony import */ var _utils_link_project_executables__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/link_project_executables.ts"); /* harmony import */ var _utils_yarn_lock__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/yarn_lock.ts"); /* harmony import */ var _utils_validate_dependencies__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./src/utils/validate_dependencies.ts"); /* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("./src/utils/bazel/index.ts"); @@ -86284,11 +59618,9 @@ const BootstrapCommand = { }) { var _projects$get; - const nonBazelProjectsOnly = await Object(_utils_projects__WEBPACK_IMPORTED_MODULE_5__[/* getNonBazelProjectsOnly */ "c"])(projects); - const batchedNonBazelProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_5__[/* topologicallyBatchProjects */ "f"])(nonBazelProjectsOnly, projectGraph); const kibanaProjectPath = ((_projects$get = projects.get('kibana')) === null || _projects$get === void 0 ? void 0 : _projects$get.path) || ''; - const runOffline = (options === null || options === void 0 ? void 0 : options.offline) === true; - const reporter = _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_2__[/* log */ "a"]); + const offline = (options === null || options === void 0 ? void 0 : options.offline) === true; + const reporter = _kbn_ci_stats_reporter__WEBPACK_IMPORTED_MODULE_1__["CiStatsReporter"].fromEnv(_utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"]); const timings = []; const time = async (id, body) => { @@ -86321,12 +59653,20 @@ const BootstrapCommand = { if (forceInstall) { await time('force install dependencies', async () => { - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* removeYarnIntegrityFileIfExists */ "e"])(Object(path__WEBPACK_IMPORTED_MODULE_0__["resolve"])(kibanaProjectPath, 'node_modules')); - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* runBazel */ "f"])(['clean', '--expunge']); - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* runBazel */ "f"])(['run', '@nodejs//:yarn'], runOffline, { - env: { - SASS_BINARY_SITE: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', - RE2_DOWNLOAD_MIRROR: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2' + await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* removeYarnIntegrityFileIfExists */ "e"])(path__WEBPACK_IMPORTED_MODULE_0___default.a.resolve(kibanaProjectPath, 'node_modules')); + await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_2__["runBazel"])({ + bazelArgs: ['clean', '--expunge'], + log: _utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"] + }); + await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_2__["runBazel"])({ + bazelArgs: ['run', '@nodejs//:yarn'], + offline, + log: _utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"], + execaOpts: { + env: { + SASS_BINARY_SITE: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', + RE2_DOWNLOAD_MIRROR: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2' + } } }); }); @@ -86334,28 +59674,12 @@ const BootstrapCommand = { await time('build packages', async () => { - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_8__[/* runBazel */ "f"])(['build', '//packages:build', '--show_result=1'], runOffline); - }); // Install monorepo npm dependencies outside of the Bazel managed ones - - for (const batch of batchedNonBazelProjects) { - for (const project of batch) { - const isExternalPlugin = project.path.includes(`${kibanaProjectPath}${path__WEBPACK_IMPORTED_MODULE_0__["sep"]}plugins`); - - if (!project.hasDependencies()) { - continue; - } - - if (isExternalPlugin) { - await project.installDependencies(); - continue; - } - - if (!project.isSinglePackageJsonProject && !project.isEveryDependencyLocal() && !isExternalPlugin) { - throw new Error(`[${project.name}] is not eligible to hold non local dependencies. Move the non local dependencies into the top level package.json.`); - } - } - } - + await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_2__["runBazel"])({ + bazelArgs: ['build', '//packages:build', '--show_result=1'], + log: _utils_log__WEBPACK_IMPORTED_MODULE_3__[/* log */ "a"], + offline + }); + }); const yarnLock = await time('read yarn.lock', async () => await Object(_utils_yarn_lock__WEBPACK_IMPORTED_MODULE_6__[/* readYarnLock */ "a"])(kbn)); if (options.validate) { @@ -86369,11 +59693,11 @@ const BootstrapCommand = { await time('link project executables', async () => { - await Object(_utils_link_project_executables__WEBPACK_IMPORTED_MODULE_4__[/* linkProjectExecutables */ "a"])(projects, projectGraph); + await Object(_utils_link_project_executables__WEBPACK_IMPORTED_MODULE_5__[/* linkProjectExecutables */ "a"])(projects, projectGraph); }); await time('update vscode config', async () => { // Update vscode settings - await Object(_utils_child_process__WEBPACK_IMPORTED_MODULE_3__[/* spawnStreaming */ "b"])(process.execPath, ['scripts/update_vscode_config'], { + await Object(_utils_child_process__WEBPACK_IMPORTED_MODULE_4__[/* spawnStreaming */ "b"])(process.execPath, ['scripts/update_vscode_config'], { cwd: kbn.getAbsolute(), env: process.env }, { @@ -86401,7 +59725,9 @@ const BootstrapCommand = { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BuildCommand; }); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/utils/bazel/index.ts"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/bazel-runner/target_node/index.js"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/utils/log.ts"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -86410,6 +59736,7 @@ const BootstrapCommand = { * Side Public License, v 1. */ + const BuildCommand = { description: 'Runs a build in the Bazel built packages', name: 'build', @@ -86421,9 +59748,12 @@ const BuildCommand = { async run(projects, projectGraph, { options }) { - const runOffline = (options === null || options === void 0 ? void 0 : options.offline) === true; // Call bazel with the target to build all available packages - - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_0__[/* runBazel */ "f"])(['build', '//packages:build', '--show_result=1'], runOffline); + // Call bazel with the target to build all available packages + await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_0__["runBazel"])({ + bazelArgs: ['build', '//packages:build', '--show_result=1'], + log: _utils_log__WEBPACK_IMPORTED_MODULE_1__[/* log */ "a"], + offline: (options === null || options === void 0 ? void 0 : options.offline) === true + }); } }; @@ -86443,9 +59773,11 @@ const BuildCommand = { /* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(ora__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("path"); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/bazel/index.ts"); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/fs.ts"); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/log.ts"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/@kbn/bazel-runner/target_node/index.js"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/bazel/index.ts"); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/fs.ts"); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./src/utils/log.ts"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -86460,6 +59792,7 @@ const BuildCommand = { + const CleanCommand = { description: 'Deletes output directories and resets internal caches.', name: 'clean', @@ -86471,7 +59804,7 @@ const CleanCommand = { async run(projects, projectGraph, { kbn }) { - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].warning(dedent__WEBPACK_IMPORTED_MODULE_0___default.a` + _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"].warning(dedent__WEBPACK_IMPORTED_MODULE_0___default.a` This command is only necessary for the circumstance where you need to recover a consistent state when problems arise. If you need to run this command often, please let us know by filling out this form: https://ela.st/yarn-kbn-clean. @@ -86481,7 +59814,7 @@ const CleanCommand = { const toDelete = []; for (const project of projects.values()) { - if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_5__[/* isDirectory */ "c"])(project.targetLocation)) { + if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_6__[/* isDirectory */ "c"])(project.targetLocation)) { toDelete.push({ cwd: project.path, pattern: Object(path__WEBPACK_IMPORTED_MODULE_3__["relative"])(project.path, project.targetLocation) @@ -86501,13 +59834,16 @@ const CleanCommand = { } // Runs Bazel soft clean - if (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_4__[/* isBazelBinAvailable */ "d"])(kbn.getAbsolute())) { - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_4__[/* runBazel */ "f"])(['clean']); - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].success('Soft cleaned bazel'); + if (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_5__[/* isBazelBinAvailable */ "d"])(kbn.getAbsolute())) { + await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4__["runBazel"])({ + bazelArgs: ['clean'], + log: _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"] + }); + _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"].success('Soft cleaned bazel'); } if (toDelete.length === 0) { - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].success('Nothing to delete'); + _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"].success('Nothing to delete'); } else { /** * In order to avoid patterns like `/build` in packages from accidentally @@ -86528,7 +59864,7 @@ const CleanCommand = { process.chdir(cwd); const promise = del__WEBPACK_IMPORTED_MODULE_1___default()(pattern); - if (_utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].wouldLogLevel('info')) { + if (_utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"].wouldLogLevel('info')) { ora__WEBPACK_IMPORTED_MODULE_2___default.a.promise(promise, Object(path__WEBPACK_IMPORTED_MODULE_3__["relative"])(originalCwd, Object(path__WEBPACK_IMPORTED_MODULE_3__["join"])(cwd, String(pattern)))); } @@ -86592,9 +59928,11 @@ const commands = { /* harmony import */ var ora__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(ora__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("path"); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/bazel/index.ts"); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/fs.ts"); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/log.ts"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/@kbn/bazel-runner/target_node/index.js"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4__); +/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/bazel/index.ts"); +/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/fs.ts"); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./src/utils/log.ts"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -86609,6 +59947,7 @@ const commands = { + const ResetCommand = { description: 'Deletes node_modules and output directories, resets internal and disk caches, and stops Bazel server', name: 'reset', @@ -86620,7 +59959,7 @@ const ResetCommand = { async run(projects, projectGraph, { kbn }) { - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].warning(dedent__WEBPACK_IMPORTED_MODULE_0___default.a` + _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"].warning(dedent__WEBPACK_IMPORTED_MODULE_0___default.a` In most cases, 'yarn kbn clean' is all that should be needed to recover a consistent state when problems arise. However for the rare cases where something get corrupt on node_modules you might need this command. If you think you need to use this command very often (which is not normal), please let us know. @@ -86628,14 +59967,14 @@ const ResetCommand = { const toDelete = []; for (const project of projects.values()) { - if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_5__[/* isDirectory */ "c"])(project.nodeModulesLocation)) { + if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_6__[/* isDirectory */ "c"])(project.nodeModulesLocation)) { toDelete.push({ cwd: project.path, pattern: Object(path__WEBPACK_IMPORTED_MODULE_3__["relative"])(project.path, project.nodeModulesLocation) }); } - if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_5__[/* isDirectory */ "c"])(project.targetLocation)) { + if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_6__[/* isDirectory */ "c"])(project.targetLocation)) { toDelete.push({ cwd: project.path, pattern: Object(path__WEBPACK_IMPORTED_MODULE_3__["relative"])(project.path, project.targetLocation) @@ -86655,15 +59994,18 @@ const ResetCommand = { } // Runs Bazel hard clean and deletes Bazel Cache Folders - if (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_4__[/* isBazelBinAvailable */ "d"])(kbn.getAbsolute())) { + if (await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_5__[/* isBazelBinAvailable */ "d"])(kbn.getAbsolute())) { // Hard cleaning bazel - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_4__[/* runBazel */ "f"])(['clean', '--expunge']); - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].success('Hard cleaned bazel'); // Deletes Bazel Cache Folders + await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_4__["runBazel"])({ + bazelArgs: ['clean', '--expunge'], + log: _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"] + }); + _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"].success('Hard cleaned bazel'); // Deletes Bazel Cache Folders - await del__WEBPACK_IMPORTED_MODULE_1___default()([await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_4__[/* getBazelDiskCacheFolder */ "a"])(), await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_4__[/* getBazelRepositoryCacheFolder */ "b"])()], { + await del__WEBPACK_IMPORTED_MODULE_1___default()([await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_5__[/* getBazelDiskCacheFolder */ "a"])(), await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_5__[/* getBazelRepositoryCacheFolder */ "b"])()], { force: true }); - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].success('Removed disk caches'); + _utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"].success('Removed disk caches'); } if (toDelete.length === 0) { @@ -86690,7 +60032,7 @@ const ResetCommand = { process.chdir(cwd); const promise = del__WEBPACK_IMPORTED_MODULE_1___default()(pattern); - if (_utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].wouldLogLevel('info')) { + if (_utils_log__WEBPACK_IMPORTED_MODULE_7__[/* log */ "a"].wouldLogLevel('info')) { ora__WEBPACK_IMPORTED_MODULE_2___default.a.promise(promise, Object(path__WEBPACK_IMPORTED_MODULE_3__["relative"])(originalCwd, Object(path__WEBPACK_IMPORTED_MODULE_3__["join"])(cwd, String(pattern)))); } @@ -86745,7 +60087,7 @@ const RunCommand = { packages using 'yarn kbn run' on Bazel built packages. If the package you are trying to act on contains a BUILD.bazel file please just use 'yarn kbn build' to build it or 'yarn kbn watch' to watch it `); - const batchedProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_4__[/* topologicallyBatchProjects */ "f"])(projects, projectGraph); + const batchedProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_4__[/* topologicallyBatchProjects */ "d"])(projects, projectGraph); if (extraArgs.length === 0) { throw new _utils_errors__WEBPACK_IMPORTED_MODULE_1__[/* CliError */ "a"]('No script specified'); @@ -86779,7 +60121,9 @@ const RunCommand = { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return WatchCommand; }); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/utils/bazel/index.ts"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/@kbn/bazel-runner/target_node/index.js"); +/* harmony import */ var _kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/utils/log.ts"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -86788,6 +60132,7 @@ const RunCommand = { * Side Public License, v 1. */ + const WatchCommand = { description: 'Runs a build in the Bazel built packages and keeps watching them for changes', name: 'watch', @@ -86804,7 +60149,11 @@ const WatchCommand = { // Note: --run_output=false arg will disable the iBazel notifications about gazelle and buildozer when running it // Can also be solved by adding a root `.bazel_fix_commands.json` but its not needed at the moment - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_0__[/* runIBazel */ "g"])(['--run_output=false', 'build', '//packages:build', '--show_result=1'], runOffline); + await Object(_kbn_bazel_runner__WEBPACK_IMPORTED_MODULE_0__["runIBazel"])({ + bazelArgs: ['--run_output=false', 'build', '//packages:build', '--show_result=1'], + log: _utils_log__WEBPACK_IMPORTED_MODULE_1__[/* log */ "a"], + offline: runOffline + }); } }; @@ -86879,164 +60228,15 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _cli__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/cli.ts"); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "run", function() { return _cli__WEBPACK_IMPORTED_MODULE_0__["a"]; }); -/* harmony import */ var _production__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/production/index.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildBazelProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buildNonBazelProductionProjects", function() { return _production__WEBPACK_IMPORTED_MODULE_1__["b"]; }); - -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/projects.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjects", function() { return _utils_projects__WEBPACK_IMPORTED_MODULE_2__["d"]; }); - -/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/utils/project.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return _utils_project__WEBPACK_IMPORTED_MODULE_3__["a"]; }); - -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/package_json.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transformDependencies", function() { return _utils_package_json__WEBPACK_IMPORTED_MODULE_4__["d"]; }); - -/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/config.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return _config__WEBPACK_IMPORTED_MODULE_5__["a"]; }); - -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - - - - - - +/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/utils/projects.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjects", function() { return _utils_projects__WEBPACK_IMPORTED_MODULE_1__["b"]; }); -/***/ }), - -/***/ "./src/production/build_bazel_production_projects.ts": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return buildBazelProductionProjects; }); -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/cpy/index.js"); -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cpy__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/globby/index.js"); -/* harmony import */ var globby__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(globby__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/production/build_non_bazel_production_projects.ts"); -/* harmony import */ var _utils_bazel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/bazel/index.ts"); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/fs.ts"); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/log.ts"); -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./src/utils/package_json.ts"); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__("./src/utils/projects.ts"); -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - - - - - - - - - -async function buildBazelProductionProjects({ - kibanaRoot, - buildRoot, - onlyOSS -}) { - const projects = await Object(_utils_projects__WEBPACK_IMPORTED_MODULE_8__[/* getBazelProjectsOnly */ "b"])(await Object(_build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_3__[/* getProductionProjects */ "b"])(kibanaRoot, onlyOSS)); - const projectNames = [...projects.values()].map(project => project.name); - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`Preparing Bazel projects production build for [${projectNames.join(', ')}]`); - await Object(_utils_bazel__WEBPACK_IMPORTED_MODULE_4__[/* runBazel */ "f"])(['build', '//packages:build']); - _utils_log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`All Bazel projects production builds for [${projectNames.join(', ')}] are complete`); - - for (const project of projects.values()) { - await copyToBuild(project, kibanaRoot, buildRoot); - await applyCorrectPermissions(project, kibanaRoot, buildRoot); - } -} -/** - * Copy all the project's files from its Bazel dist directory into the - * project build folder. - * - * When copying all the files into the build, we exclude `node_modules` because - * we want the Kibana build to be responsible for actually installing all - * dependencies. The primary reason for allowing the Kibana build process to - * manage dependencies is that it will "dedupe" them, so we don't include - * unnecessary copies of dependencies. We also exclude every related Bazel build - * files in order to get the most cleaner package module we can in the final distributable. - */ +/* harmony import */ var _utils_project__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/project.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Project", function() { return _utils_project__WEBPACK_IMPORTED_MODULE_2__["a"]; }); -async function copyToBuild(project, kibanaRoot, buildRoot) { - // We want the package to have the same relative location within the build - const relativeProjectPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["relative"])(kibanaRoot, project.path); - const buildProjectPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["resolve"])(buildRoot, relativeProjectPath); - await cpy__WEBPACK_IMPORTED_MODULE_0___default()(['**/*'], buildProjectPath, { - cwd: Object(path__WEBPACK_IMPORTED_MODULE_2__["join"])(kibanaRoot, 'bazel-bin', 'packages', Object(path__WEBPACK_IMPORTED_MODULE_2__["basename"])(buildProjectPath), 'npm_module'), - dot: true, - onlyFiles: true, - parents: true - }); // If a project is using an intermediate build directory, we special-case our - // handling of `package.json`, as the project build process might have copied - // (a potentially modified) `package.json` into the intermediate build - // directory already. If so, we want to use that `package.json` as the basis - // for creating the production-ready `package.json`. If it's not present in - // the intermediate build, we fall back to using the project's already defined - // `package.json`. - - const packageJson = (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_5__[/* isFile */ "d"])(Object(path__WEBPACK_IMPORTED_MODULE_2__["join"])(buildProjectPath, 'package.json'))) ? await Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_7__[/* readPackageJson */ "c"])(buildProjectPath) : project.json; - const preparedPackageJson = Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_7__[/* createProductionPackageJson */ "a"])(packageJson); - await Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_7__[/* writePackageJson */ "e"])(buildProjectPath, preparedPackageJson); -} - -async function applyCorrectPermissions(project, kibanaRoot, buildRoot) { - const relativeProjectPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["relative"])(kibanaRoot, project.path); - const buildProjectPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["resolve"])(buildRoot, relativeProjectPath); - const allPluginPaths = await globby__WEBPACK_IMPORTED_MODULE_1___default()([`**/*`], { - onlyFiles: false, - cwd: buildProjectPath, - dot: true - }); - - for (const pluginPath of allPluginPaths) { - const resolvedPluginPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["resolve"])(buildProjectPath, pluginPath); - - if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_5__[/* isFile */ "d"])(resolvedPluginPath)) { - await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_5__[/* chmod */ "a"])(resolvedPluginPath, 0o644); - } - - if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_5__[/* isDirectory */ "c"])(resolvedPluginPath)) { - await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_5__[/* chmod */ "a"])(resolvedPluginPath, 0o755); - } - } -} - -/***/ }), - -/***/ "./src/production/build_non_bazel_production_projects.ts": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return buildNonBazelProductionProjects; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getProductionProjects; }); -/* unused harmony export buildProject */ -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/cpy/index.js"); -/* harmony import */ var cpy__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(cpy__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/del/index.js"); -/* harmony import */ var del__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(del__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("path"); -/* harmony import */ var path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/config.ts"); -/* harmony import */ var _utils_fs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./src/utils/fs.ts"); -/* harmony import */ var _utils_log__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/log.ts"); -/* harmony import */ var _utils_package_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/package_json.ts"); -/* harmony import */ var _utils_projects__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./src/utils/projects.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getProjectPaths", function() { return _config__WEBPACK_IMPORTED_MODULE_3__["a"]; }); + /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -87049,135 +60249,6 @@ async function applyCorrectPermissions(project, kibanaRoot, buildRoot) { - - - -async function buildNonBazelProductionProjects({ - kibanaRoot, - buildRoot, - onlyOSS -}) { - const projects = await Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__[/* getNonBazelProjectsOnly */ "c"])(await getProductionProjects(kibanaRoot, onlyOSS)); - const projectGraph = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__[/* buildProjectGraph */ "a"])(projects); - const batchedProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__[/* topologicallyBatchProjects */ "f"])(projects, projectGraph); - const projectNames = [...projects.values()].map(project => project.name); - _utils_log__WEBPACK_IMPORTED_MODULE_5__[/* log */ "a"].info(`Preparing non Bazel production build for [${projectNames.join(', ')}]`); - - for (const batch of batchedProjects) { - for (const project of batch) { - await deleteTarget(project); - await buildProject(project); - await copyToBuild(project, kibanaRoot, buildRoot); - } - } -} -/** - * Returns the subset of projects that should be built into the production - * bundle. As we copy these into Kibana's `node_modules` during the build step, - * and let Kibana's build process be responsible for installing dependencies, - * we only include Kibana's transitive _production_ dependencies. If onlyOSS - * is supplied, we omit projects with build.oss in their package.json set to false. - */ - -async function getProductionProjects(rootPath, onlyOSS) { - const projectPaths = Object(_config__WEBPACK_IMPORTED_MODULE_3__[/* getProjectPaths */ "a"])({ - rootPath - }); - const projects = await Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__[/* getProjects */ "d"])(rootPath, projectPaths); - const projectsSubset = [projects.get('kibana')]; - - if (projects.has('x-pack')) { - projectsSubset.push(projects.get('x-pack')); - } - - const productionProjects = Object(_utils_projects__WEBPACK_IMPORTED_MODULE_7__[/* includeTransitiveProjects */ "e"])(projectsSubset, projects, { - onlyProductionDependencies: true - }); // We remove Kibana, as we're already building Kibana - - productionProjects.delete('kibana'); - - if (onlyOSS) { - productionProjects.forEach(project => { - if (project.getBuildConfig().oss === false) { - productionProjects.delete(project.json.name); - } - }); - } - - return productionProjects; -} - -async function deleteTarget(project) { - const targetDir = project.targetLocation; - - if (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_4__[/* isDirectory */ "c"])(targetDir)) { - await del__WEBPACK_IMPORTED_MODULE_1___default()(targetDir, { - force: true - }); - } -} - -async function buildProject(project) { - if (project.hasScript('build')) { - await project.runScript('build'); - } -} -/** - * Copy all the project's files from its "intermediate build directory" and - * into the build. The intermediate directory can either be the root of the - * project or some other location defined in the project's `package.json`. - * - * When copying all the files into the build, we exclude `node_modules` because - * we want the Kibana build to be responsible for actually installing all - * dependencies. The primary reason for allowing the Kibana build process to - * manage dependencies is that it will "dedupe" them, so we don't include - * unnecessary copies of dependencies. - */ - -async function copyToBuild(project, kibanaRoot, buildRoot) { - // We want the package to have the same relative location within the build - const relativeProjectPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["relative"])(kibanaRoot, project.path); - const buildProjectPath = Object(path__WEBPACK_IMPORTED_MODULE_2__["resolve"])(buildRoot, relativeProjectPath); - await cpy__WEBPACK_IMPORTED_MODULE_0___default()(['**/*', '!node_modules/**'], buildProjectPath, { - cwd: project.getIntermediateBuildDirectory(), - dot: true, - onlyFiles: true, - parents: true - }); // If a project is using an intermediate build directory, we special-case our - // handling of `package.json`, as the project build process might have copied - // (a potentially modified) `package.json` into the intermediate build - // directory already. If so, we want to use that `package.json` as the basis - // for creating the production-ready `package.json`. If it's not present in - // the intermediate build, we fall back to using the project's already defined - // `package.json`. - - const packageJson = (await Object(_utils_fs__WEBPACK_IMPORTED_MODULE_4__[/* isFile */ "d"])(Object(path__WEBPACK_IMPORTED_MODULE_2__["join"])(buildProjectPath, 'package.json'))) ? await Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_6__[/* readPackageJson */ "c"])(buildProjectPath) : project.json; - const preparedPackageJson = Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_6__[/* createProductionPackageJson */ "a"])(packageJson); - await Object(_utils_package_json__WEBPACK_IMPORTED_MODULE_6__[/* writePackageJson */ "e"])(buildProjectPath, preparedPackageJson); -} - -/***/ }), - -/***/ "./src/production/index.ts": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony import */ var _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/production/build_bazel_production_projects.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _build_bazel_production_projects__WEBPACK_IMPORTED_MODULE_0__["a"]; }); - -/* harmony import */ var _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./src/production/build_non_bazel_production_projects.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "b", function() { return _build_non_bazel_production_projects__WEBPACK_IMPORTED_MODULE_1__["a"]; }); - -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - - - /***/ }), /***/ "./src/run.ts": @@ -87395,13 +60466,8 @@ async function getBazelRepositoryCacheFolder() { /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "d", function() { return _install_tools__WEBPACK_IMPORTED_MODULE_1__["b"]; }); -/* harmony import */ var _run__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/bazel/run.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "f", function() { return _run__WEBPACK_IMPORTED_MODULE_2__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "g", function() { return _run__WEBPACK_IMPORTED_MODULE_2__["b"]; }); - -/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("./src/utils/bazel/yarn_integrity.ts"); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "e", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_3__["a"]; }); +/* harmony import */ var _yarn_integrity__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./src/utils/bazel/yarn_integrity.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "e", function() { return _yarn_integrity__WEBPACK_IMPORTED_MODULE_2__["a"]; }); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -87414,7 +60480,6 @@ async function getBazelRepositoryCacheFolder() { - /***/ }), /***/ "./src/utils/bazel/install_tools.ts": @@ -87528,85 +60593,6 @@ async function installBazelTools(repoRootPath) { /***/ }), -/***/ "./src/utils/bazel/run.ts": -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return runBazel; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return runIBazel; }); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/chalk/source/index.js"); -/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(chalk__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/Subject.js"); -/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/observable/merge.js"); -/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__("../../node_modules/rxjs/dist/esm5/internal/operators/tap.js"); -/* harmony import */ var _kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("../../node_modules/@kbn/stdio-dev-helpers/target_node/index.js"); -/* harmony import */ var _kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./src/utils/child_process.ts"); -/* harmony import */ var _log__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./src/utils/log.ts"); -/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__("./src/utils/errors.ts"); -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - - - - - - - - -async function runBazelCommandWithRunner(bazelCommandRunner, bazelArgs, offline = false, runOpts = {}) { - // Force logs to pipe in order to control the output of them - const bazelOpts = _objectSpread(_objectSpread({}, runOpts), {}, { - stdio: 'pipe' - }); - - if (offline) { - bazelArgs = [...bazelArgs, '--config=offline']; - } - - const bazelProc = Object(_child_process__WEBPACK_IMPORTED_MODULE_5__[/* spawn */ "a"])(bazelCommandRunner, bazelArgs, bazelOpts); - const bazelLogs$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__[/* Subject */ "a"](); // Bazel outputs machine readable output into stdout and human readable output goes to stderr. - // Therefore we need to get both. In order to get errors we need to parse the actual text line - - const bazelLogSubscription = rxjs__WEBPACK_IMPORTED_MODULE_2__[/* merge */ "a"](Object(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stdout).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`))), Object(_kbn_stdio_dev_helpers__WEBPACK_IMPORTED_MODULE_4__["observeLines"])(bazelProc.stderr).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__[/* tap */ "a"])(line => _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].info(`${chalk__WEBPACK_IMPORTED_MODULE_0___default.a.cyan(`[${bazelCommandRunner}]`)} ${line}`)))).subscribe(bazelLogs$); // Wait for process and logs to finish, unsubscribing in the end - - try { - await bazelProc; - } catch { - _log__WEBPACK_IMPORTED_MODULE_6__[/* log */ "a"].error('HINT: If experiencing problems with node_modules try `yarn kbn bootstrap --force-install` or as last resort `yarn kbn reset && yarn kbn bootstrap`'); - throw new _errors__WEBPACK_IMPORTED_MODULE_7__[/* CliError */ "a"](`The bazel command that was running failed to complete.`); - } - - await bazelLogs$.toPromise(); - await bazelLogSubscription.unsubscribe(); -} - -async function runBazel(bazelArgs, offline = false, runOpts = {}) { - await runBazelCommandWithRunner('bazel', bazelArgs, offline, runOpts); -} -async function runIBazel(bazelArgs, offline = false, runOpts = {}) { - const extendedEnv = _objectSpread({ - IBAZEL_USE_LEGACY_WATCHER: '0' - }, runOpts === null || runOpts === void 0 ? void 0 : runOpts.env); - - await runBazelCommandWithRunner('ibazel', bazelArgs, offline, _objectSpread(_objectSpread({}, runOpts), {}, { - env: extendedEnv - })); -} - -/***/ }), - /***/ "./src/utils/bazel/setup_remote_cache.ts": /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -88100,7 +61086,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope class Kibana { static async loadFrom(rootPath) { - return new Kibana(await Object(_projects__WEBPACK_IMPORTED_MODULE_5__[/* getProjects */ "d"])(rootPath, Object(_config__WEBPACK_IMPORTED_MODULE_6__[/* getProjectPaths */ "a"])({ + return new Kibana(await Object(_projects__WEBPACK_IMPORTED_MODULE_5__[/* getProjects */ "b"])(rootPath, Object(_config__WEBPACK_IMPORTED_MODULE_6__[/* getProjectPaths */ "a"])({ rootPath }))); } @@ -88159,7 +61145,7 @@ class Kibana { getProjectAndDeps(name) { const project = this.getProject(name); - return Object(_projects__WEBPACK_IMPORTED_MODULE_5__[/* includeTransitiveProjects */ "e"])([project], this.allWorkspaceProjects); + return Object(_projects__WEBPACK_IMPORTED_MODULE_5__[/* includeTransitiveProjects */ "c"])([project], this.allWorkspaceProjects); } /** filter the projects to just those matching certain paths/include/exclude tags */ @@ -88356,22 +61342,13 @@ const log = new Log(); /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return readPackageJson; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return writePackageJson; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return createProductionPackageJson; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isLinkDependency; }); -/* unused harmony export isBazelPackageDependency */ -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return transformDependencies; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return readPackageJson; }); +/* unused harmony export writePackageJson */ +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return isLinkDependency; }); /* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/read-pkg/index.js"); /* harmony import */ var read_pkg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(read_pkg__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("../../node_modules/write-pkg/index.js"); /* harmony import */ var write_pkg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(write_pkg__WEBPACK_IMPORTED_MODULE_1__); -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License @@ -88390,46 +61367,7 @@ function readPackageJson(cwd) { function writePackageJson(path, json) { return write_pkg__WEBPACK_IMPORTED_MODULE_1___default()(path, json); } -const createProductionPackageJson = pkgJson => _objectSpread(_objectSpread({}, pkgJson), {}, { - dependencies: transformDependencies(pkgJson.dependencies) -}); const isLinkDependency = depVersion => depVersion.startsWith('link:'); -const isBazelPackageDependency = depVersion => depVersion.startsWith('link:bazel-bin/'); -/** - * Replaces `link:` dependencies with `file:` dependencies. When installing - * dependencies, these `file:` dependencies will be copied into `node_modules` - * instead of being symlinked. - * - * This will allow us to copy packages into the build and run `yarn`, which - * will then _copy_ the `file:` dependencies into `node_modules` instead of - * symlinking like we do in development. - * - * Additionally it also taken care of replacing `link:bazel-bin/` with - * `file:` so we can also support the copy of the Bazel packages dist already into - * build/packages to be copied into the node_modules - */ - -function transformDependencies(dependencies = {}) { - const newDeps = {}; - - for (const name of Object.keys(dependencies)) { - const depVersion = dependencies[name]; - - if (!isLinkDependency(depVersion)) { - newDeps[name] = depVersion; - continue; - } - - if (isBazelPackageDependency(depVersion)) { - newDeps[name] = depVersion.replace('link:bazel-bin/', 'file:'); - continue; - } - - newDeps[name] = depVersion.replace('link:', 'file:'); - } - - return newDeps; -} /***/ }), @@ -88525,7 +61463,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope class Project { static async fromPath(path) { - const pkgJson = await Object(_package_json__WEBPACK_IMPORTED_MODULE_5__[/* readPackageJson */ "c"])(path); + const pkgJson = await Object(_package_json__WEBPACK_IMPORTED_MODULE_5__[/* readPackageJson */ "b"])(path); return new Project(pkgJson, path); } /** parsed package.json */ @@ -88593,7 +61531,7 @@ class Project { package: `${this.name} (${this.packageJsonLocation})` }; - if (Object(_package_json__WEBPACK_IMPORTED_MODULE_5__[/* isLinkDependency */ "b"])(versionInPackageJson)) { + if (Object(_package_json__WEBPACK_IMPORTED_MODULE_5__[/* isLinkDependency */ "a"])(versionInPackageJson)) { throw new _errors__WEBPACK_IMPORTED_MODULE_3__[/* CliError */ "a"](`[${this.name}] depends on [${project.name}] using 'link:', but the path is wrong. ${updateMsg}`, meta); } @@ -88603,16 +61541,6 @@ class Project { getBuildConfig() { return this.json.kibana && this.json.kibana.build || {}; } - /** - * Returns the directory that should be copied into the Kibana build artifact. - * This config can be specified to only include the project's build artifacts - * instead of everything located in the project directory. - */ - - - getIntermediateBuildDirectory() { - return path__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(this.path, this.getBuildConfig().intermediateBuildDirectory || '.'); - } getCleanConfig() { return this.json.kibana && this.json.kibana.clean || {}; @@ -88661,11 +61589,11 @@ class Project { async runScript(scriptName, args = []) { _log__WEBPACK_IMPORTED_MODULE_4__[/* log */ "a"].info(`Running script [${scriptName}] in [${this.name}]:`); - return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__[/* runScriptInPackage */ "b"])(scriptName, args, this); + return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__[/* runScriptInPackage */ "a"])(scriptName, args, this); } runScriptStreaming(scriptName, options = {}) { - return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__[/* runScriptInPackageStreaming */ "c"])({ + return Object(_scripts__WEBPACK_IMPORTED_MODULE_6__[/* runScriptInPackageStreaming */ "b"])({ script: scriptName, args: options.args || [], pkg: this, @@ -88678,14 +61606,7 @@ class Project { } isEveryDependencyLocal() { - return Object.values(this.allDependencies).every(dep => Object(_package_json__WEBPACK_IMPORTED_MODULE_5__[/* isLinkDependency */ "b"])(dep)); - } - - async installDependencies(options = {}) { - _log__WEBPACK_IMPORTED_MODULE_4__[/* log */ "a"].info(`[${this.name}] running yarn`); - _log__WEBPACK_IMPORTED_MODULE_4__[/* log */ "a"].write(''); - await Object(_scripts__WEBPACK_IMPORTED_MODULE_6__[/* installInDir */ "a"])(this.path, options === null || options === void 0 ? void 0 : options.extraArgs); - _log__WEBPACK_IMPORTED_MODULE_4__[/* log */ "a"].write(''); + return Object.values(this.allDependencies).every(dep => Object(_package_json__WEBPACK_IMPORTED_MODULE_5__[/* isLinkDependency */ "a"])(dep)); } } // We normalize all path separators to `/` in generated files @@ -88700,12 +61621,12 @@ function normalizePath(path) { /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return getProjects; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getNonBazelProjectsOnly; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getBazelProjectsOnly; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getProjects; }); +/* unused harmony export getNonBazelProjectsOnly */ +/* unused harmony export getBazelProjectsOnly */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return buildProjectGraph; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return topologicallyBatchProjects; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return includeTransitiveProjects; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return topologicallyBatchProjects; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return includeTransitiveProjects; }); /* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("../../node_modules/glob/glob.js"); /* harmony import */ var glob__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(glob__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("path"); @@ -89137,9 +62058,8 @@ async function regenerateSyntheticPackageMap(plugins, repoRoot) { /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return installInDir; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return runScriptInPackage; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return runScriptInPackageStreaming; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return runScriptInPackage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return runScriptInPackageStreaming; }); /* harmony import */ var _child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./src/utils/child_process.ts"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one @@ -89150,22 +62070,6 @@ async function regenerateSyntheticPackageMap(plugins, repoRoot) { */ const YARN_EXEC = process.env.npm_execpath || 'yarn'; -/** - * Install all dependencies in the given directory - */ - -async function installInDir(directory, extraArgs = []) { - const options = ['install', '--non-interactive', ...extraArgs]; // We pass the mutex flag to ensure only one instance of yarn runs at any - // given time (e.g. to avoid conflicts). - - await Object(_child_process__WEBPACK_IMPORTED_MODULE_0__[/* spawn */ "a"])(YARN_EXEC, options, { - cwd: directory, - env: { - SASS_BINARY_SITE: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', - RE2_DOWNLOAD_MIRROR: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2' - } - }); -} /** * Run script in the given directory */ @@ -89335,7 +62239,7 @@ async function validateDependencies(kbn, yarnLock) { } } - const duplicateRanges = Array.from(depRanges.entries()).filter(([, ranges]) => ranges.length > 1 && !ranges.every(rng => Object(_package_json__WEBPACK_IMPORTED_MODULE_6__[/* isLinkDependency */ "b"])(rng.range))).reduce((acc, [dep, ranges]) => [...acc, dep, ...ranges.map(({ + const duplicateRanges = Array.from(depRanges.entries()).filter(([, ranges]) => ranges.length > 1 && !ranges.every(rng => Object(_package_json__WEBPACK_IMPORTED_MODULE_6__[/* isLinkDependency */ "a"])(rng.range))).reduce((acc, [dep, ranges]) => [...acc, dep, ...ranges.map(({ range, projects }) => ` ${range} => ${projects.map(p => p.name).join(', ')}`)], []).join('\n '); diff --git a/packages/kbn-pm/src/commands/bootstrap.ts b/packages/kbn-pm/src/commands/bootstrap.ts index 3ea1a5f19b13b..3f9275cff8e61 100644 --- a/packages/kbn-pm/src/commands/bootstrap.ts +++ b/packages/kbn-pm/src/commands/bootstrap.ts @@ -6,17 +6,17 @@ * Side Public License, v 1. */ -import { resolve, sep } from 'path'; +import Path from 'path'; import { CiStatsReporter } from '@kbn/ci-stats-reporter'; +import { runBazel } from '@kbn/bazel-runner'; import { log } from '../utils/log'; import { spawnStreaming } from '../utils/child_process'; import { linkProjectExecutables } from '../utils/link_project_executables'; -import { getNonBazelProjectsOnly, topologicallyBatchProjects } from '../utils/projects'; import { ICommand } from '.'; import { readYarnLock } from '../utils/yarn_lock'; import { validateDependencies } from '../utils/validate_dependencies'; -import { installBazelTools, removeYarnIntegrityFileIfExists, runBazel } from '../utils/bazel'; +import { installBazelTools, removeYarnIntegrityFileIfExists } from '../utils/bazel'; import { setupRemoteCache } from '../utils/bazel/setup_remote_cache'; export const BootstrapCommand: ICommand = { @@ -29,10 +29,8 @@ export const BootstrapCommand: ICommand = { }, async run(projects, projectGraph, { options, kbn, rootPath }) { - const nonBazelProjectsOnly = await getNonBazelProjectsOnly(projects); - const batchedNonBazelProjects = topologicallyBatchProjects(nonBazelProjectsOnly, projectGraph); const kibanaProjectPath = projects.get('kibana')?.path || ''; - const runOffline = options?.offline === true; + const offline = options?.offline === true; const reporter = CiStatsReporter.fromEnv(log); const timings: Array<{ id: string; ms: number }> = []; @@ -69,14 +67,22 @@ export const BootstrapCommand: ICommand = { if (forceInstall) { await time('force install dependencies', async () => { - await removeYarnIntegrityFileIfExists(resolve(kibanaProjectPath, 'node_modules')); - await runBazel(['clean', '--expunge']); - await runBazel(['run', '@nodejs//:yarn'], runOffline, { - env: { - SASS_BINARY_SITE: - 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', - RE2_DOWNLOAD_MIRROR: - 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2', + await removeYarnIntegrityFileIfExists(Path.resolve(kibanaProjectPath, 'node_modules')); + await runBazel({ + bazelArgs: ['clean', '--expunge'], + log, + }); + await runBazel({ + bazelArgs: ['run', '@nodejs//:yarn'], + offline, + log, + execaOpts: { + env: { + SASS_BINARY_SITE: + 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', + RE2_DOWNLOAD_MIRROR: + 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2', + }, }, }); }); @@ -84,35 +90,13 @@ export const BootstrapCommand: ICommand = { // build packages await time('build packages', async () => { - await runBazel(['build', '//packages:build', '--show_result=1'], runOffline); + await runBazel({ + bazelArgs: ['build', '//packages:build', '--show_result=1'], + log, + offline, + }); }); - // Install monorepo npm dependencies outside of the Bazel managed ones - for (const batch of batchedNonBazelProjects) { - for (const project of batch) { - const isExternalPlugin = project.path.includes(`${kibanaProjectPath}${sep}plugins`); - - if (!project.hasDependencies()) { - continue; - } - - if (isExternalPlugin) { - await project.installDependencies(); - continue; - } - - if ( - !project.isSinglePackageJsonProject && - !project.isEveryDependencyLocal() && - !isExternalPlugin - ) { - throw new Error( - `[${project.name}] is not eligible to hold non local dependencies. Move the non local dependencies into the top level package.json.` - ); - } - } - } - const yarnLock = await time('read yarn.lock', async () => await readYarnLock(kbn)); if (options.validate) { diff --git a/packages/kbn-pm/src/commands/build.ts b/packages/kbn-pm/src/commands/build.ts index 654558bfdda5f..567b4addddee7 100644 --- a/packages/kbn-pm/src/commands/build.ts +++ b/packages/kbn-pm/src/commands/build.ts @@ -6,8 +6,9 @@ * Side Public License, v 1. */ -import { runBazel } from '../utils/bazel'; +import { runBazel } from '@kbn/bazel-runner'; import { ICommand } from '.'; +import { log } from '../utils/log'; export const BuildCommand: ICommand = { description: 'Runs a build in the Bazel built packages', @@ -19,9 +20,11 @@ export const BuildCommand: ICommand = { }, async run(projects, projectGraph, { options }) { - const runOffline = options?.offline === true; - // Call bazel with the target to build all available packages - await runBazel(['build', '//packages:build', '--show_result=1'], runOffline); + await runBazel({ + bazelArgs: ['build', '//packages:build', '--show_result=1'], + log, + offline: options?.offline === true, + }); }, }; diff --git a/packages/kbn-pm/src/commands/clean.ts b/packages/kbn-pm/src/commands/clean.ts index b46288db5bffd..8f8564add2096 100644 --- a/packages/kbn-pm/src/commands/clean.ts +++ b/packages/kbn-pm/src/commands/clean.ts @@ -10,8 +10,9 @@ import dedent from 'dedent'; import del from 'del'; import ora from 'ora'; import { join, relative } from 'path'; +import { runBazel } from '@kbn/bazel-runner'; -import { isBazelBinAvailable, runBazel } from '../utils/bazel'; +import { isBazelBinAvailable } from '../utils/bazel'; import { isDirectory } from '../utils/fs'; import { log } from '../utils/log'; import { ICommand } from '.'; @@ -54,7 +55,10 @@ export const CleanCommand: ICommand = { // Runs Bazel soft clean if (await isBazelBinAvailable(kbn.getAbsolute())) { - await runBazel(['clean']); + await runBazel({ + bazelArgs: ['clean'], + log, + }); log.success('Soft cleaned bazel'); } diff --git a/packages/kbn-pm/src/commands/reset.ts b/packages/kbn-pm/src/commands/reset.ts index 090017c1fafca..5b6aac40149c2 100644 --- a/packages/kbn-pm/src/commands/reset.ts +++ b/packages/kbn-pm/src/commands/reset.ts @@ -11,11 +11,12 @@ import del from 'del'; import ora from 'ora'; import { join, relative } from 'path'; +import { runBazel } from '@kbn/bazel-runner'; + import { getBazelDiskCacheFolder, getBazelRepositoryCacheFolder, isBazelBinAvailable, - runBazel, } from '../utils/bazel'; import { isDirectory } from '../utils/fs'; import { log } from '../utils/log'; @@ -66,7 +67,10 @@ export const ResetCommand: ICommand = { // Runs Bazel hard clean and deletes Bazel Cache Folders if (await isBazelBinAvailable(kbn.getAbsolute())) { // Hard cleaning bazel - await runBazel(['clean', '--expunge']); + await runBazel({ + bazelArgs: ['clean', '--expunge'], + log, + }); log.success('Hard cleaned bazel'); // Deletes Bazel Cache Folders diff --git a/packages/kbn-pm/src/commands/watch.ts b/packages/kbn-pm/src/commands/watch.ts index 6f5b926aa21c5..2bae2ddc66235 100644 --- a/packages/kbn-pm/src/commands/watch.ts +++ b/packages/kbn-pm/src/commands/watch.ts @@ -6,8 +6,9 @@ * Side Public License, v 1. */ -import { runIBazel } from '../utils/bazel'; +import { runIBazel } from '@kbn/bazel-runner'; import { ICommand } from '.'; +import { log } from '../utils/log'; export const WatchCommand: ICommand = { description: 'Runs a build in the Bazel built packages and keeps watching them for changes', @@ -25,9 +26,10 @@ export const WatchCommand: ICommand = { // // Note: --run_output=false arg will disable the iBazel notifications about gazelle and buildozer when running it // Can also be solved by adding a root `.bazel_fix_commands.json` but its not needed at the moment - await runIBazel( - ['--run_output=false', 'build', '//packages:build', '--show_result=1'], - runOffline - ); + await runIBazel({ + bazelArgs: ['--run_output=false', 'build', '//packages:build', '--show_result=1'], + log, + offline: runOffline, + }); }, }; diff --git a/packages/kbn-pm/src/index.ts b/packages/kbn-pm/src/index.ts index 8d7b47c396847..d2f907a43db20 100644 --- a/packages/kbn-pm/src/index.ts +++ b/packages/kbn-pm/src/index.ts @@ -7,8 +7,6 @@ */ export { run } from './cli'; -export { buildBazelProductionProjects, buildNonBazelProductionProjects } from './production'; export { getProjects } from './utils/projects'; export { Project } from './utils/project'; -export { transformDependencies } from './utils/package_json'; export { getProjectPaths } from './config'; diff --git a/packages/kbn-pm/src/production/__fixtures__/external_packages/with_kibana_link_deps/package.json b/packages/kbn-pm/src/production/__fixtures__/external_packages/with_kibana_link_deps/package.json deleted file mode 100644 index c0ed787bcb0e8..0000000000000 --- a/packages/kbn-pm/src/production/__fixtures__/external_packages/with_kibana_link_deps/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "quux", - "version": "1.0.0", - "dependencies": { - "@kbn/foo": "link:../../packages/foo" - } -} diff --git a/packages/kbn-pm/src/production/__fixtures__/external_packages/with_other_link_deps/package.json b/packages/kbn-pm/src/production/__fixtures__/external_packages/with_other_link_deps/package.json deleted file mode 100644 index e60f626e5234f..0000000000000 --- a/packages/kbn-pm/src/production/__fixtures__/external_packages/with_other_link_deps/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "quux", - "version": "1.0.0", - "dependencies": { - "bar": "link:../foo/packages/bar" - } -} \ No newline at end of file diff --git a/packages/kbn-pm/src/production/build_bazel_production_projects.ts b/packages/kbn-pm/src/production/build_bazel_production_projects.ts deleted file mode 100644 index 07c0b651f5ad1..0000000000000 --- a/packages/kbn-pm/src/production/build_bazel_production_projects.ts +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import copy from 'cpy'; -import globby from 'globby'; -import { basename, join, relative, resolve } from 'path'; - -import { getProductionProjects } from './build_non_bazel_production_projects'; -import { runBazel } from '../utils/bazel'; -import { chmod, isFile, isDirectory } from '../utils/fs'; -import { log } from '../utils/log'; -import { - createProductionPackageJson, - readPackageJson, - writePackageJson, -} from '../utils/package_json'; -import { getBazelProjectsOnly } from '../utils/projects'; -import { Project } from '..'; - -export async function buildBazelProductionProjects({ - kibanaRoot, - buildRoot, - onlyOSS, -}: { - kibanaRoot: string; - buildRoot: string; - onlyOSS?: boolean; -}) { - const projects = await getBazelProjectsOnly(await getProductionProjects(kibanaRoot, onlyOSS)); - - const projectNames = [...projects.values()].map((project) => project.name); - log.info(`Preparing Bazel projects production build for [${projectNames.join(', ')}]`); - - await runBazel(['build', '//packages:build']); - log.info(`All Bazel projects production builds for [${projectNames.join(', ')}] are complete`); - - for (const project of projects.values()) { - await copyToBuild(project, kibanaRoot, buildRoot); - await applyCorrectPermissions(project, kibanaRoot, buildRoot); - } -} - -/** - * Copy all the project's files from its Bazel dist directory into the - * project build folder. - * - * When copying all the files into the build, we exclude `node_modules` because - * we want the Kibana build to be responsible for actually installing all - * dependencies. The primary reason for allowing the Kibana build process to - * manage dependencies is that it will "dedupe" them, so we don't include - * unnecessary copies of dependencies. We also exclude every related Bazel build - * files in order to get the most cleaner package module we can in the final distributable. - */ -async function copyToBuild(project: Project, kibanaRoot: string, buildRoot: string) { - // We want the package to have the same relative location within the build - const relativeProjectPath = relative(kibanaRoot, project.path); - const buildProjectPath = resolve(buildRoot, relativeProjectPath); - - await copy(['**/*'], buildProjectPath, { - cwd: join(kibanaRoot, 'bazel-bin', 'packages', basename(buildProjectPath), 'npm_module'), - dot: true, - onlyFiles: true, - parents: true, - } as copy.Options); - - // If a project is using an intermediate build directory, we special-case our - // handling of `package.json`, as the project build process might have copied - // (a potentially modified) `package.json` into the intermediate build - // directory already. If so, we want to use that `package.json` as the basis - // for creating the production-ready `package.json`. If it's not present in - // the intermediate build, we fall back to using the project's already defined - // `package.json`. - const packageJson = (await isFile(join(buildProjectPath, 'package.json'))) - ? await readPackageJson(buildProjectPath) - : project.json; - - const preparedPackageJson = createProductionPackageJson(packageJson); - await writePackageJson(buildProjectPath, preparedPackageJson); -} - -async function applyCorrectPermissions(project: Project, kibanaRoot: string, buildRoot: string) { - const relativeProjectPath = relative(kibanaRoot, project.path); - const buildProjectPath = resolve(buildRoot, relativeProjectPath); - const allPluginPaths = await globby([`**/*`], { - onlyFiles: false, - cwd: buildProjectPath, - dot: true, - }); - - for (const pluginPath of allPluginPaths) { - const resolvedPluginPath = resolve(buildProjectPath, pluginPath); - if (await isFile(resolvedPluginPath)) { - await chmod(resolvedPluginPath, 0o644); - } - - if (await isDirectory(resolvedPluginPath)) { - await chmod(resolvedPluginPath, 0o755); - } - } -} diff --git a/packages/kbn-pm/src/production/build_non_bazel_production_projects.ts b/packages/kbn-pm/src/production/build_non_bazel_production_projects.ts deleted file mode 100644 index 391047b13cea7..0000000000000 --- a/packages/kbn-pm/src/production/build_non_bazel_production_projects.ts +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import copy from 'cpy'; -import del from 'del'; -import { join, relative, resolve } from 'path'; - -import { getProjectPaths } from '../config'; -import { isDirectory, isFile } from '../utils/fs'; -import { log } from '../utils/log'; -import { - createProductionPackageJson, - readPackageJson, - writePackageJson, -} from '../utils/package_json'; -import { - buildProjectGraph, - getNonBazelProjectsOnly, - getProjects, - includeTransitiveProjects, - topologicallyBatchProjects, -} from '../utils/projects'; -import { Project } from '..'; - -export async function buildNonBazelProductionProjects({ - kibanaRoot, - buildRoot, - onlyOSS, -}: { - kibanaRoot: string; - buildRoot: string; - onlyOSS?: boolean; -}) { - const projects = await getNonBazelProjectsOnly(await getProductionProjects(kibanaRoot, onlyOSS)); - const projectGraph = buildProjectGraph(projects); - const batchedProjects = topologicallyBatchProjects(projects, projectGraph); - - const projectNames = [...projects.values()].map((project) => project.name); - log.info(`Preparing non Bazel production build for [${projectNames.join(', ')}]`); - - for (const batch of batchedProjects) { - for (const project of batch) { - await deleteTarget(project); - await buildProject(project); - await copyToBuild(project, kibanaRoot, buildRoot); - } - } -} - -/** - * Returns the subset of projects that should be built into the production - * bundle. As we copy these into Kibana's `node_modules` during the build step, - * and let Kibana's build process be responsible for installing dependencies, - * we only include Kibana's transitive _production_ dependencies. If onlyOSS - * is supplied, we omit projects with build.oss in their package.json set to false. - */ -export async function getProductionProjects(rootPath: string, onlyOSS?: boolean) { - const projectPaths = getProjectPaths({ rootPath }); - const projects = await getProjects(rootPath, projectPaths); - const projectsSubset = [projects.get('kibana')!]; - - if (projects.has('x-pack')) { - projectsSubset.push(projects.get('x-pack')!); - } - - const productionProjects = includeTransitiveProjects(projectsSubset, projects, { - onlyProductionDependencies: true, - }); - - // We remove Kibana, as we're already building Kibana - productionProjects.delete('kibana'); - - if (onlyOSS) { - productionProjects.forEach((project) => { - if (project.getBuildConfig().oss === false) { - productionProjects.delete(project.json.name); - } - }); - } - - return productionProjects; -} - -async function deleteTarget(project: Project) { - const targetDir = project.targetLocation; - - if (await isDirectory(targetDir)) { - await del(targetDir, { force: true }); - } -} - -export async function buildProject(project: Project) { - if (project.hasScript('build')) { - await project.runScript('build'); - } -} - -/** - * Copy all the project's files from its "intermediate build directory" and - * into the build. The intermediate directory can either be the root of the - * project or some other location defined in the project's `package.json`. - * - * When copying all the files into the build, we exclude `node_modules` because - * we want the Kibana build to be responsible for actually installing all - * dependencies. The primary reason for allowing the Kibana build process to - * manage dependencies is that it will "dedupe" them, so we don't include - * unnecessary copies of dependencies. - */ -async function copyToBuild(project: Project, kibanaRoot: string, buildRoot: string) { - // We want the package to have the same relative location within the build - const relativeProjectPath = relative(kibanaRoot, project.path); - const buildProjectPath = resolve(buildRoot, relativeProjectPath); - - await copy(['**/*', '!node_modules/**'], buildProjectPath, { - cwd: project.getIntermediateBuildDirectory(), - dot: true, - onlyFiles: true, - parents: true, - } as copy.Options); - - // If a project is using an intermediate build directory, we special-case our - // handling of `package.json`, as the project build process might have copied - // (a potentially modified) `package.json` into the intermediate build - // directory already. If so, we want to use that `package.json` as the basis - // for creating the production-ready `package.json`. If it's not present in - // the intermediate build, we fall back to using the project's already defined - // `package.json`. - const packageJson = (await isFile(join(buildProjectPath, 'package.json'))) - ? await readPackageJson(buildProjectPath) - : project.json; - - const preparedPackageJson = createProductionPackageJson(packageJson); - await writePackageJson(buildProjectPath, preparedPackageJson); -} diff --git a/packages/kbn-pm/src/utils/bazel/index.ts b/packages/kbn-pm/src/utils/bazel/index.ts index 84e26a0b914e1..39b3cb9c61f00 100644 --- a/packages/kbn-pm/src/utils/bazel/index.ts +++ b/packages/kbn-pm/src/utils/bazel/index.ts @@ -8,5 +8,4 @@ export * from './get_cache_folders'; export * from './install_tools'; -export * from './run'; export * from './yarn_integrity'; diff --git a/packages/kbn-pm/src/utils/bazel/run.ts b/packages/kbn-pm/src/utils/bazel/run.ts deleted file mode 100644 index 4d7b82cc4eac0..0000000000000 --- a/packages/kbn-pm/src/utils/bazel/run.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import chalk from 'chalk'; -import execa from 'execa'; -import * as Rx from 'rxjs'; -import { tap } from 'rxjs/operators'; -import { observeLines } from '@kbn/stdio-dev-helpers'; -import { spawn } from '../child_process'; -import { log } from '../log'; -import { CliError } from '../errors'; - -type BazelCommandRunner = 'bazel' | 'ibazel'; - -async function runBazelCommandWithRunner( - bazelCommandRunner: BazelCommandRunner, - bazelArgs: string[], - offline: boolean = false, - runOpts: execa.Options = {} -) { - // Force logs to pipe in order to control the output of them - const bazelOpts: execa.Options = { - ...runOpts, - stdio: 'pipe', - }; - - if (offline) { - bazelArgs = [...bazelArgs, '--config=offline']; - } - - const bazelProc = spawn(bazelCommandRunner, bazelArgs, bazelOpts); - - const bazelLogs$ = new Rx.Subject(); - - // Bazel outputs machine readable output into stdout and human readable output goes to stderr. - // Therefore we need to get both. In order to get errors we need to parse the actual text line - const bazelLogSubscription = Rx.merge( - observeLines(bazelProc.stdout!).pipe( - tap((line) => log.info(`${chalk.cyan(`[${bazelCommandRunner}]`)} ${line}`)) - ), - observeLines(bazelProc.stderr!).pipe( - tap((line) => log.info(`${chalk.cyan(`[${bazelCommandRunner}]`)} ${line}`)) - ) - ).subscribe(bazelLogs$); - - // Wait for process and logs to finish, unsubscribing in the end - try { - await bazelProc; - } catch { - log.error( - 'HINT: If experiencing problems with node_modules try `yarn kbn bootstrap --force-install` or as last resort `yarn kbn reset && yarn kbn bootstrap`' - ); - throw new CliError(`The bazel command that was running failed to complete.`); - } - await bazelLogs$.toPromise(); - await bazelLogSubscription.unsubscribe(); -} - -export async function runBazel( - bazelArgs: string[], - offline: boolean = false, - runOpts: execa.Options = {} -) { - await runBazelCommandWithRunner('bazel', bazelArgs, offline, runOpts); -} - -export async function runIBazel( - bazelArgs: string[], - offline: boolean = false, - runOpts: execa.Options = {} -) { - const extendedEnv = { IBAZEL_USE_LEGACY_WATCHER: '0', ...runOpts?.env }; - await runBazelCommandWithRunner('ibazel', bazelArgs, offline, { ...runOpts, env: extendedEnv }); -} diff --git a/packages/kbn-pm/src/utils/package_json.ts b/packages/kbn-pm/src/utils/package_json.ts index a50d8994b5720..e8ed8d0a7f8f5 100644 --- a/packages/kbn-pm/src/utils/package_json.ts +++ b/packages/kbn-pm/src/utils/package_json.ts @@ -27,45 +27,4 @@ export function writePackageJson(path: string, json: IPackageJson) { return writePkg(path, json); } -export const createProductionPackageJson = (pkgJson: IPackageJson) => ({ - ...pkgJson, - dependencies: transformDependencies(pkgJson.dependencies), -}); - export const isLinkDependency = (depVersion: string) => depVersion.startsWith('link:'); - -export const isBazelPackageDependency = (depVersion: string) => - depVersion.startsWith('link:bazel-bin/'); - -/** - * Replaces `link:` dependencies with `file:` dependencies. When installing - * dependencies, these `file:` dependencies will be copied into `node_modules` - * instead of being symlinked. - * - * This will allow us to copy packages into the build and run `yarn`, which - * will then _copy_ the `file:` dependencies into `node_modules` instead of - * symlinking like we do in development. - * - * Additionally it also taken care of replacing `link:bazel-bin/` with - * `file:` so we can also support the copy of the Bazel packages dist already into - * build/packages to be copied into the node_modules - */ -export function transformDependencies(dependencies: IPackageDependencies = {}) { - const newDeps: IPackageDependencies = {}; - for (const name of Object.keys(dependencies)) { - const depVersion = dependencies[name]; - - if (!isLinkDependency(depVersion)) { - newDeps[name] = depVersion; - continue; - } - - if (isBazelPackageDependency(depVersion)) { - newDeps[name] = depVersion.replace('link:bazel-bin/', 'file:'); - continue; - } - - newDeps[name] = depVersion.replace('link:', 'file:'); - } - return newDeps; -} diff --git a/packages/kbn-pm/src/utils/project.test.ts b/packages/kbn-pm/src/utils/project.test.ts index b283ca1cc0fc4..9be5953880283 100644 --- a/packages/kbn-pm/src/utils/project.test.ts +++ b/packages/kbn-pm/src/utils/project.test.ts @@ -145,28 +145,3 @@ describe('#getExecutables()', () => { expect(() => createProjectWith({ bin: 1 }).getExecutables()).toThrowErrorMatchingSnapshot(); }); }); - -describe('#getIntermediateBuildDirectory', () => { - test('is the same as the project path when not specified', () => { - const project = createProjectWith({}, 'packages/my-project'); - const path = project.getIntermediateBuildDirectory(); - - expect(path).toBe(project.path); - }); - - test('appends the `intermediateBuildDirectory` to project path when specified', () => { - const project = createProjectWith( - { - kibana: { - build: { - intermediateBuildDirectory: 'quux', - }, - }, - }, - 'packages/my-project' - ); - const path = project.getIntermediateBuildDirectory(); - - expect(path).toBe(join(project.path, 'quux')); - }); -}); diff --git a/packages/kbn-pm/src/utils/project.ts b/packages/kbn-pm/src/utils/project.ts index 8e86b111c6a18..48c606c10da42 100644 --- a/packages/kbn-pm/src/utils/project.ts +++ b/packages/kbn-pm/src/utils/project.ts @@ -19,11 +19,10 @@ import { isLinkDependency, readPackageJson, } from './package_json'; -import { installInDir, runScriptInPackage, runScriptInPackageStreaming } from './scripts'; +import { runScriptInPackage, runScriptInPackageStreaming } from './scripts'; interface BuildConfig { skip?: boolean; - intermediateBuildDirectory?: string; oss?: boolean; } @@ -135,15 +134,6 @@ export class Project { return (this.json.kibana && this.json.kibana.build) || {}; } - /** - * Returns the directory that should be copied into the Kibana build artifact. - * This config can be specified to only include the project's build artifacts - * instead of everything located in the project directory. - */ - public getIntermediateBuildDirectory() { - return Path.resolve(this.path, this.getBuildConfig().intermediateBuildDirectory || '.'); - } - public getCleanConfig(): CleanConfig { return (this.json.kibana && this.json.kibana.clean) || {}; } @@ -215,14 +205,6 @@ export class Project { public isEveryDependencyLocal() { return Object.values(this.allDependencies).every((dep) => isLinkDependency(dep)); } - - public async installDependencies(options: { extraArgs?: string[] } = {}) { - log.info(`[${this.name}] running yarn`); - - log.write(''); - await installInDir(this.path, options?.extraArgs); - log.write(''); - } } // We normalize all path separators to `/` in generated files diff --git a/packages/kbn-pm/src/utils/scripts.ts b/packages/kbn-pm/src/utils/scripts.ts index 6e99285e145f8..fff2b4ca77a14 100644 --- a/packages/kbn-pm/src/utils/scripts.ts +++ b/packages/kbn-pm/src/utils/scripts.ts @@ -11,25 +11,6 @@ import { Project } from './project'; const YARN_EXEC = process.env.npm_execpath || 'yarn'; -/** - * Install all dependencies in the given directory - */ -export async function installInDir(directory: string, extraArgs: string[] = []) { - const options = ['install', '--non-interactive', ...extraArgs]; - - // We pass the mutex flag to ensure only one instance of yarn runs at any - // given time (e.g. to avoid conflicts). - await spawn(YARN_EXEC, options, { - cwd: directory, - env: { - SASS_BINARY_SITE: - 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', - RE2_DOWNLOAD_MIRROR: - 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2', - }, - }); -} - /** * Run script in the given directory */ diff --git a/src/dev/build/build_distributables.ts b/src/dev/build/build_distributables.ts index 3ec908756c9cf..ad9c8323b769d 100644 --- a/src/dev/build/build_distributables.ts +++ b/src/dev/build/build_distributables.ts @@ -74,7 +74,7 @@ export async function buildDistributables(log: ToolingLog, options: BuildOptions await run(Tasks.CreateEmptyDirsAndFiles); await run(Tasks.CreateReadme); await run(Tasks.BuildBazelPackages); - await run(Tasks.BuildPackages); + await run(Tasks.BuildXpack); await run(Tasks.BuildKibanaPlatformPlugins); await run(Tasks.TranspileBabel); await run(Tasks.CreatePackageJson); diff --git a/src/dev/build/lib/scan_copy.ts b/src/dev/build/lib/scan_copy.ts index 91112fbf04ab4..d8285e1853173 100644 --- a/src/dev/build/lib/scan_copy.ts +++ b/src/dev/build/lib/scan_copy.ts @@ -7,17 +7,12 @@ */ import Fs from 'fs'; -import { basename, join } from 'path'; -import { promisify } from 'util'; +import Fsp from 'fs/promises'; +import Path from 'path'; -// @ts-ignore -import { assertAbsolute, mkdirp } from './fs'; +import { asyncMap, asyncForEach } from '@kbn/std'; -const statAsync = promisify(Fs.stat); -const mkdirAsync = promisify(Fs.mkdir); -const utimesAsync = promisify(Fs.utimes); -const copyFileAsync = promisify(Fs.copyFile); -const readdirAsync = promisify(Fs.readdir); +import { assertAbsolute, mkdirp } from './fs'; interface Options { /** @@ -32,6 +27,10 @@ interface Options { * function that is called with each Record */ filter?: (record: Record) => boolean; + /** + * define permissions for reach item copied + */ + permissions?: (record: Record) => number | undefined; /** * Date to use for atime/mtime */ @@ -52,48 +51,50 @@ class Record { * function or modifying mtime/atime for each file. */ export async function scanCopy(options: Options) { - const { source, destination, filter, time } = options; + const { source, destination, filter, time, permissions } = options; assertAbsolute(source); assertAbsolute(destination); - // get filtered Records for files/directories within a directory - const getChildRecords = async (parent: Record) => { - const names = await readdirAsync(parent.absolute); - const records = await Promise.all( - names.map(async (name) => { - const absolute = join(parent.absolute, name); - const stat = await statAsync(absolute); - return new Record(stat.isDirectory(), name, absolute, join(parent.absoluteDest, name)); - }) - ); + // create or copy each child of a directory + const copyChildren = async (parent: Record) => { + const names = await Fsp.readdir(parent.absolute); - return records.filter((record) => (filter ? filter(record) : true)); - }; + const records = await asyncMap(names, async (name) => { + const absolute = Path.join(parent.absolute, name); + const stat = await Fsp.stat(absolute); + return new Record(stat.isDirectory(), name, absolute, Path.join(parent.absoluteDest, name)); + }); - // create or copy each child of a directory - const copyChildren = async (record: Record) => { - const children = await getChildRecords(record); - await Promise.all(children.map(async (child) => await copy(child))); - }; + await asyncForEach(records, async (rec) => { + if (filter && !filter(rec)) { + return; + } - // create or copy a record and recurse into directories - const copy = async (record: Record) => { - if (record.isDirectory) { - await mkdirAsync(record.absoluteDest); - } else { - await copyFileAsync(record.absolute, record.absoluteDest, Fs.constants.COPYFILE_EXCL); - } + if (rec.isDirectory) { + await Fsp.mkdir(rec.absoluteDest, { + mode: permissions ? permissions(rec) : undefined, + }); + } else { + await Fsp.copyFile(rec.absolute, rec.absoluteDest, Fs.constants.COPYFILE_EXCL); + if (permissions) { + const perm = permissions(rec); + if (perm !== undefined) { + await Fsp.chmod(rec.absoluteDest, perm); + } + } + } - if (time) { - await utimesAsync(record.absoluteDest, time, time); - } + if (time) { + await Fsp.utimes(rec.absoluteDest, time, time); + } - if (record.isDirectory) { - await copyChildren(record); - } + if (rec.isDirectory) { + await copyChildren(rec); + } + }); }; await mkdirp(destination); - await copyChildren(new Record(true, basename(source), source, destination)); + await copyChildren(new Record(true, Path.basename(source), source, destination)); } diff --git a/src/dev/build/tasks/build_packages_task.ts b/src/dev/build/tasks/build_packages_task.ts index 808903661a595..e30ffd082e250 100644 --- a/src/dev/build/tasks/build_packages_task.ts +++ b/src/dev/build/tasks/build_packages_task.ts @@ -6,74 +6,56 @@ * Side Public License, v 1. */ -import { buildBazelProductionProjects, buildNonBazelProductionProjects } from '@kbn/pm'; +import Path from 'path'; -import { mkdirp, Task } from '../lib'; +import { discoverBazelPackages } from '@kbn/bazel-packages'; +import { runBazel } from '@kbn/bazel-runner'; -/** - * High-level overview of how we enable shared packages in production: - * - * tl;dr We copy the packages directly into Kibana's `node_modules` folder, - * which means they will be available when `require(...)`d. - * - * During development we rely on `@kbn/pm` to find all the packages - * in the Kibana repo and run Yarn in all the right places to create symlinks - * between these packages. This development setup is described in-depth in the - * readme in `@kbn/pm`. - * - * However, for production we can't use `@kbn/pm` as part of the - * installation as we don't have an install "tool/step" that can kick it off. - * We also can't include symlinks in the archives for the different platform, so - * we can't run `@kbn/pm` in the same way we do for development and - * just package the result. That means we have two options: either we prepare - * everything in the built package or we perform the necessary actions when - * Kibana is starting up in production. We decided on the former: all the Kibana - * packages are prepared as part of the build process. - * - * (All of this is a bit different for Kibana plugins as they _do_ have an - * install step — the plugin CLI tool. However, Kibana plugins are not allowed - * to have separate packages yet.) - * - * How Kibana packages are prepared: - * - * 1. Run the build for each package - * 2. Copy all the packages into the `build/kibana` folder - * 3. Replace `link:` dependencies with `file:` dependencies in both Kibana's - * `package.json` and in all the dependencies. Yarn will then copy the - * sources of these dependencies into `node_modules` instead of setting up - * symlinks. - * - * In the end after the `install dependencies` build step all Kibana packages - * will be located within the top-level `node_modules` folder, which means - * normal module resolution will apply and you can `require(...)` any of these - * packages when running Kibana in production. - * - * ## Known limitations - * - * - This process _only_ include packages that used by Kibana or any of its - * transitive packages, as it depends on only running `yarn` at the top level. - * That means a Kibana plugin can only depend on Kibana packages that are used - * in some way by Kibana itself in production, as it won't otherwise be - * included in the production build. - */ +import { Task, scanCopy, write, exec } from '../lib'; export const BuildBazelPackages: Task = { description: 'Building distributable versions of Bazel packages', async run(config, log, build) { - await buildBazelProductionProjects({ - kibanaRoot: config.resolveFromRepo(), - buildRoot: build.resolvePath(), + const packages = (await discoverBazelPackages()).filter((pkg) => !pkg.isDevOnly()); + + log.info(`Preparing Bazel projects production build non-devOnly packages`); + await runBazel({ + log, + bazelArgs: ['build', '//packages:build'], }); + + for (const pkg of packages) { + log.info(`Copying build of`, pkg.pkg.name, 'into build'); + + const pkgDirInBuild = build.resolvePath(pkg.normalizedRepoRelativeDir); + + // copy the built npm_module target dir into the build, package.json is updated to copy + // the sources we actually end up using into the node_modules directory when we run + // yarn install + await scanCopy({ + source: config.resolveFromRepo('bazel-bin', pkg.normalizedRepoRelativeDir, 'npm_module'), + destination: pkgDirInBuild, + permissions: (rec) => (rec.isDirectory ? 0o755 : 0o644), + }); + + await write(Path.resolve(pkgDirInBuild, 'package.json'), JSON.stringify(pkg.pkg, null, 2)); + } }, }; -export const BuildPackages: Task = { - description: 'Building distributable versions of non Bazel packages', +export const BuildXpack: Task = { + description: 'Building distributable versions of x-pack', async run(config, log, build) { - await mkdirp(config.resolveFromRepo('target')); - await buildNonBazelProductionProjects({ - kibanaRoot: config.resolveFromRepo(), - buildRoot: build.resolvePath(), + log.info('running x-pack build task'); + await exec(log, 'yarn', ['build'], { + level: 'debug', + cwd: config.resolveFromRepo('x-pack'), + }); + + log.info('copying built x-pack into build dir'); + await scanCopy({ + source: config.resolveFromRepo('x-pack/build/plugin/kibana/x-pack'), + destination: build.resolvePath('x-pack'), }); }, }; diff --git a/src/dev/build/tasks/copy_source_task.ts b/src/dev/build/tasks/copy_source_task.ts index eb53b51293bbb..141eafc57ae1f 100644 --- a/src/dev/build/tasks/copy_source_task.ts +++ b/src/dev/build/tasks/copy_source_task.ts @@ -6,6 +6,9 @@ * Side Public License, v 1. */ +import { getAllRepoRelativeBazelPackageDirs } from '@kbn/bazel-packages'; +import normalizePath from 'normalize-path'; + import { copyAll, Task } from '../lib'; export const CopySource: Task = { @@ -45,6 +48,8 @@ export const CopySource: Task = { 'tsconfig*.json', '.i18nrc.json', 'kibana.d.ts', + // explicitly ignore all package roots, even if they're not selected by previous patterns + ...getAllRepoRelativeBazelPackageDirs().map((dir) => `!${normalizePath(dir)}/**`), ], }); }, diff --git a/src/dev/build/tasks/install_dependencies_task.ts b/src/dev/build/tasks/install_dependencies_task.ts index 8237789f4967b..59c9e38911243 100644 --- a/src/dev/build/tasks/install_dependencies_task.ts +++ b/src/dev/build/tasks/install_dependencies_task.ts @@ -6,18 +6,20 @@ * Side Public License, v 1. */ -import { Project } from '@kbn/pm'; +import { Task, exec } from '../lib'; -import { Task } from '../lib'; +const YARN_EXEC = process.env.npm_execpath || 'yarn'; export const InstallDependencies: Task = { description: 'Installing node_modules, including production builds of packages', async run(config, log, build) { - const project = await Project.fromPath(build.resolvePath()); - - await project.installDependencies({ - extraArgs: [ + await exec( + log, + YARN_EXEC, + [ + 'install', + '--non-interactive', '--production', '--ignore-optional', '--pure-lockfile', @@ -27,6 +29,15 @@ export const InstallDependencies: Task = { // This is commonly seen in shared folders on virtual machines '--no-bin-links', ], - }); + { + cwd: build.resolvePath(), + env: { + SASS_BINARY_SITE: + 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-sass', + RE2_DOWNLOAD_MIRROR: + 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2', + }, + } + ); }, }; diff --git a/src/dev/build/tasks/package_json/create_package_json_tasks.ts b/src/dev/build/tasks/package_json/create_package_json_tasks.ts index a84cd050e461d..e3368656713c9 100644 --- a/src/dev/build/tasks/package_json/create_package_json_tasks.ts +++ b/src/dev/build/tasks/package_json/create_package_json_tasks.ts @@ -6,11 +6,38 @@ * Side Public License, v 1. */ -// @ts-ignore -import { transformDependencies } from '@kbn/pm'; import { findUsedDependencies } from './find_used_dependencies'; import { read, write, Task } from '../../lib'; +/** + * Replaces `link:` dependencies with `file:` dependencies. When installing + * dependencies, these `file:` dependencies will be copied into `node_modules` + * instead of being symlinked. + * + * This will allow us to copy packages into the build and run `yarn`, which + * will then _copy_ the `file:` dependencies into `node_modules` instead of + * symlinking like we do in development. + * + * Additionally it also taken care of replacing `link:bazel-bin/` with + * `file:` so we can also support the copy of the Bazel packages dist already into + * build/packages to be copied into the node_modules + */ +export function transformDependencies(dependencies: Record) { + return Object.fromEntries( + Object.entries(dependencies).map(([name, version]) => { + if (!version.startsWith('link:')) { + return [name, version]; + } + + if (version.startsWith('link:bazel-bin/')) { + return [name, version.replace('link:bazel-bin/', 'file:')]; + } + + return [name, version.replace('link:', 'file:')]; + }) + ); +} + export const CreatePackageJson: Task = { description: 'Creating build-ready version of package.json', diff --git a/x-pack/package.json b/x-pack/package.json index 182ee65c1d12e..b5a72343268a8 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -13,7 +13,6 @@ }, "kibana": { "build": { - "intermediateBuildDirectory": "build/plugin/kibana/x-pack", "oss": false }, "clean": { diff --git a/yarn.lock b/yarn.lock index 4af5a274d7350..9afb46346f5fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2960,6 +2960,10 @@ version "0.0.0" uid "" +"@kbn/bazel-runner@link:bazel-bin/packages/kbn-bazel-runner": + version "0.0.0" + uid "" + "@kbn/ci-stats-client@link:bazel-bin/packages/kbn-ci-stats-client": version "0.0.0" uid "" @@ -6036,6 +6040,10 @@ version "0.0.0" uid "" +"@types/kbn__bazel-runner@link:bazel-bin/packages/kbn-bazel-runner/npm_module_types": + version "0.0.0" + uid "" + "@types/kbn__ci-stats-client@link:bazel-bin/packages/kbn-ci-stats-client/npm_module_types": version "0.0.0" uid "" From 18aa549e1fd3ee3a74c154c3e16873bbeb44719e Mon Sep 17 00:00:00 2001 From: Dominique Clarke Date: Tue, 19 Apr 2022 22:53:29 -0400 Subject: [PATCH 25/25] [Uptime] monitor management - adjust sort field map for inline monitor errors (#130606) * uptime - monitor management - adjust sort field map for inline monitor errors * add additional field to sortFieldMap --- .../components/monitor_management/hooks/use_inline_errors.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/x-pack/plugins/uptime/public/components/monitor_management/hooks/use_inline_errors.ts b/x-pack/plugins/uptime/public/components/monitor_management/hooks/use_inline_errors.ts index ae9c5d20345a9..adc07853a93cd 100644 --- a/x-pack/plugins/uptime/public/components/monitor_management/hooks/use_inline_errors.ts +++ b/x-pack/plugins/uptime/public/components/monitor_management/hooks/use_inline_errors.ts @@ -17,8 +17,9 @@ import { useInlineErrorsCount } from './use_inline_errors_count'; import { SYNTHETICS_INDEX_PATTERN } from '../../../../common/constants'; const sortFieldMap: Record = { - name: 'monitor.name', - urls: 'url.full', + ['name.keyword']: 'monitor.name', + ['urls.keyword']: 'url.full', + ['type.keyword']: 'monitor.type', '@timestamp': '@timestamp', };